Visual Studio 2015 Bundler/Minifier Web/SPA 项目中的问题
Visual Studio 2015 Bundler/Minifier Issues in Web/SPA project
我们在 Visual Studio 2015 年使用 Typescript 创建了一个相当复杂的单页应用程序。
这是一个 Web 项目,而不是客户端上的 MVC 或 .NET。我们仅在客户端上使用 jQuery、JavaScript、CSS3 和 HTML5,在服务器上使用 Web API 2.0/C#。作为构建过程的一部分,所有文件必须 bundled/minified。
问题
直到最近,madskristensen Bundler/Minifier 一直在可靠地缩小 HTML 文件,bundle/minify 所有 CSS 和 JavaScript 文件一分为二单独的文件供下载。几天前,VS 开始在项目构建过程中显示错误对话框。当编辑一个或多个 JavaScript 文件并启动构建时,会发生这种情况。 bundler/minifier 尝试执行它的操作,但无法访问文件。
我发现至少有两个人最近遇到了同样的问题。我还没有找到任何解决方案。
错误信息
Bundler/Minifier 进程无法访问文件,因为它或它们正被另一个进程使用。此警告消息由 Bundler/Minifier 在弹出对话框中显示(有时一次显示 20+ windows)。标记为争用的文件是捆绑的 JavaScript 代码 (bundled.js)。显然有某种竞争条件导致了这个问题。偶尔,Visual Studio 会毫无问题地构建和生成 bundled/minified JavaScript 文件(罕见且不可预测)。大多数情况下,VS 会完成缩小过程,但缩小后的文件比正常尺寸小,而且已损坏。
我们正在使用 Windows10。几天前安装了最新版本的 madskristensen Bundler/Minifier。我无法弄清楚在哪里可以找到早期版本以查看是否是问题所在。我已经在多台电脑上验证了这个问题,但不幸的是,我们所有的电脑都已经更新了最新版本的软件。我们已经验证过去没有问题的旧项目版本现在都表现出相同的症状。
问题 1: 在哪里可以获得旧版本的 madskristensen Bundler/Minifier?我找到了 Visual Studio 2013 年的链接,但没有找到 2015 年的链接。
问题 2: madskristensen Bundler/Minifier 可以来自脚本文件 运行 而不是嵌入到构建流程中吗?我尝试使用 Task Runner Explorer 在预构建事件和 post 构建事件中将进程设置为 运行,但问题仍然存在。
我正在寻找使 madskristensen Bundler/Minifier 工作的方法。任何想法将不胜感激。
更新问题 3:
如果 madskristensen Bundler/Minifier 不能从 post 构建过程中的批处理文件中 运行,有哪些替代方案?
问候...
解决方法选项
由于这个问题阻碍了我们的 testing/development 流程,我们必须想出一个可行的近期替代方案,直到问题有望通过 madskristensen Bundler/Minifier 解决。
位于 http://ajaxmin.codeplex.com/ 的 Microsoft Ajax Minifier 是捆绑和缩小我们的项目 JavaScript 代码的可行替代方案。在Visual Studio2015的post构建过程中没多久就得到了一个批处理文件运行。
Post 构建批处理文件
我在 post 构建过程中包含了以下内容:
调用 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
此过程生成等效的 bundled/minified 代码,该代码位于我们的应用程序项目文件夹中。 clobber 选项允许覆盖以前版本的包。min.js 文件。
此解决方法支持在捆绑包中生成 JavaScript 个文件的有序列表,这是我们的项目所必需的。
我仍然希望有一个使用 madskristensen Bundler/Minifier 的选项,因为我们仍然必须使用它来缩小我们的 HTML。
问候...
我们在 Visual Studio 2015 年使用 Typescript 创建了一个相当复杂的单页应用程序。 这是一个 Web 项目,而不是客户端上的 MVC 或 .NET。我们仅在客户端上使用 jQuery、JavaScript、CSS3 和 HTML5,在服务器上使用 Web API 2.0/C#。作为构建过程的一部分,所有文件必须 bundled/minified。
问题
直到最近,madskristensen Bundler/Minifier 一直在可靠地缩小 HTML 文件,bundle/minify 所有 CSS 和 JavaScript 文件一分为二单独的文件供下载。几天前,VS 开始在项目构建过程中显示错误对话框。当编辑一个或多个 JavaScript 文件并启动构建时,会发生这种情况。 bundler/minifier 尝试执行它的操作,但无法访问文件。
我发现至少有两个人最近遇到了同样的问题。我还没有找到任何解决方案。
错误信息
Bundler/Minifier 进程无法访问文件,因为它或它们正被另一个进程使用。此警告消息由 Bundler/Minifier 在弹出对话框中显示(有时一次显示 20+ windows)。标记为争用的文件是捆绑的 JavaScript 代码 (bundled.js)。显然有某种竞争条件导致了这个问题。偶尔,Visual Studio 会毫无问题地构建和生成 bundled/minified JavaScript 文件(罕见且不可预测)。大多数情况下,VS 会完成缩小过程,但缩小后的文件比正常尺寸小,而且已损坏。
我们正在使用 Windows10。几天前安装了最新版本的 madskristensen Bundler/Minifier。我无法弄清楚在哪里可以找到早期版本以查看是否是问题所在。我已经在多台电脑上验证了这个问题,但不幸的是,我们所有的电脑都已经更新了最新版本的软件。我们已经验证过去没有问题的旧项目版本现在都表现出相同的症状。
问题 1: 在哪里可以获得旧版本的 madskristensen Bundler/Minifier?我找到了 Visual Studio 2013 年的链接,但没有找到 2015 年的链接。
问题 2: madskristensen Bundler/Minifier 可以来自脚本文件 运行 而不是嵌入到构建流程中吗?我尝试使用 Task Runner Explorer 在预构建事件和 post 构建事件中将进程设置为 运行,但问题仍然存在。
我正在寻找使 madskristensen Bundler/Minifier 工作的方法。任何想法将不胜感激。
更新问题 3: 如果 madskristensen Bundler/Minifier 不能从 post 构建过程中的批处理文件中 运行,有哪些替代方案?
问候...
解决方法选项
由于这个问题阻碍了我们的 testing/development 流程,我们必须想出一个可行的近期替代方案,直到问题有望通过 madskristensen Bundler/Minifier 解决。
位于 http://ajaxmin.codeplex.com/ 的 Microsoft Ajax Minifier 是捆绑和缩小我们的项目 JavaScript 代码的可行替代方案。在Visual Studio2015的post构建过程中没多久就得到了一个批处理文件运行。
Post 构建批处理文件
我在 post 构建过程中包含了以下内容: 调用 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
此过程生成等效的 bundled/minified 代码,该代码位于我们的应用程序项目文件夹中。 clobber 选项允许覆盖以前版本的包。min.js 文件。
此解决方法支持在捆绑包中生成 JavaScript 个文件的有序列表,这是我们的项目所必需的。
我仍然希望有一个使用 madskristensen Bundler/Minifier 的选项,因为我们仍然必须使用它来缩小我们的 HTML。
问候...