Web / SPA项目中的Visual Studio 2015 Bundler / Minifier问题

时间:2016-05-13 22:22:32

标签: javascript html css bundler minify

我们在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,还有哪些替代方案?

...问候

1 个答案:

答案 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。

...问候