我们在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进程无法访问文件,因为它或其他进程正在使用它们。 Bundler / Minifier在弹出对话框中显示此警告消息(有时一次超过20个窗口)。标记为争用的文件是捆绑的JavaScript代码(bundled.js)。显然存在导致这个问题的某种竞争条件。有一段时间,Visual Studio将构建并生成捆绑/缩小的JavaScript文件而不会出现问题(罕见且不可预测)。大多数情况下,VS将完成缩小过程,但缩小文件的大小小于正常,并且已损坏。
我们正在使用Windows 10.几天前安装了最新版本的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,还有哪些替代方案?
...问候
答案 0 :(得分:2)
解决方案选项
由于这个问题对我们的测试/开发过程来说是一个阻碍,我们不得不提出一个可行的近期替代方案,直到问题有望通过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 < / p>
此过程生成等效的捆绑/缩小代码,该代码放在我们的app项目文件夹中。 clobber选项允许覆盖先前版本的bundle.min.js文件。
此解决方法支持在捆绑包中生成JavaScript文件的有序列表,这是我们项目所必需的。
我仍然希望有一个选项来使用madskristensen Bundler / Minifier,因为我们仍然需要使用它来缩小我们的HTML。
...问候