我们在Visual Studio 2015中使用Typescript创建一个相当复杂的单页应用程序。
这是一个Web项目,而不是客户端上的MVC或.NET。我们仅在客户端上使用jQuery,JavaScript,CSS3和HTML5,在服务器上使用Web API 2.0 / C#。在构建过程中,必须捆绑/缩小所有文件。
问题
直到最近,madskristensen Bundler / Minifier一直在可靠地工作以最小化HTML文件,并将所有CSS和JavaScript文件捆绑/最小化为两个单独的文件以供下载。几天前,VS在项目构建过程中开始显示错误对话框。编辑一个或多个JavaScript文件并启动构建时,会发生这种情况。捆绑程序/压缩程序尝试执行其操作,但无法访问文件。
我发现至少还有另外两个最近遇到相同问题的人。我没有找到任何解决方案。
错误信息
Bundler / Minifier进程无法访问文件,因为该文件或它们正在被另一个进程使用。 Bundler / Minifier会在弹出对话框中显示此警告消息(有时一次显示20个以上的窗口)。标记为争用的文件是捆绑的JavaScript代码(bundled.js)。显然有某种种族条件导致此问题。偶尔,Visual Studio会生成并生成捆绑/缩小的JavaScript文件,而不会出现问题(罕见且不可预测)。大多数情况下,VS将完成缩小过程,但是缩小文件的大小小于正常大小,并且已损坏。
我们正在使用Windows10。几天前安装了最新版本的madskristensen Bundler / Minifier。我无法弄清楚在哪里可以找到较早的版本,以查看是否存在问题。我已经在多台PC上验证了该问题,但是很遗憾,我们所有的PC均已更新为最新版本的软件。我们已经验证了过去没有问题的旧项目版本现在都表现出相同的症状。
问题1:在哪里可以获得madskristensen Bundler / Minifier的旧版本?我找到了Visual Studio 2013的链接,但没有找到2015的链接。
问题2:能否从脚本文件运行madskristensen Bundler / Minifier,而不是将其嵌入到Build流中?我尝试使用Task Runner Explorer设置流程以在构建前和构建后事件中运行,但是问题仍然存在。
我正在寻找一种使madskristensen Bundler / Minifier工作的方法。任何想法将不胜感激。
更新的问题3:
如果在后期构建过程中无法从批处理文件运行madskristensen Bundler / Minifier,那么有哪些替代方案?
问候…
最佳答案
解决方法选项
由于此问题是我们测试/开发过程的障碍,因此我们不得不提出可行的近期替代方案,直到该问题可以由madskristensen Bundler / Minifier解决。
位于http://ajaxmin.codeplex.com/的Microsoft Ajax Minifier是捆绑和缩小我们的项目JavaScript代码的可行选择。很快就可以在Visual Studio 2015的后期构建过程中运行批处理文件。
发布构建批处理文件
我在发布后的过程中添加了以下内容:
调用cd“ $(ProjectDir)”
bundleMinifyJavaScript.bat(位于项目根目录中)
在批处理文件中,我首先更改为项目路径,然后执行Ajax MInifier的完整路径,如下所示:
cd“ C:\ Users \ path…\ projectName”
“ C:\ Program Files(x86)\ Microsoft \ Microsoft Ajax Minifier \ ajaxminifier.exe” libs / jquery.js libs / typeahead.js…这里有更多文件…-out app / bundle.min.js –clobber
此过程生成等效的捆绑/最小化代码,将其放置在我们的应用程序项目文件夹中。 clobber选项允许覆盖bundle.min.js文件的先前版本。
此解决方法支持在捆绑包中生成JavaScript文件的有序列表,这对于我们的项目是必需的。
我仍然希望使用madskristensen Bundler / Minifier的选项,因为我们仍然必须使用它来缩小HTML。
问候…