我将 Visual Studio 2013 和 .NET 4.5 用于 MVC 项目。
我通过 Pluralsight 上的几个视频学习使用 AngularJS,其中一个演示了使用 Grunt 清理输出目录,然后使用 ngmin 对 Javascript 文件进行最小安全的过程。
我的流程是使用 gruntfile.js 来清理并针对解决方案中的 javascript 文件运行 ngmin,然后将它们放入名为 app_built 的目录中。这是通过项目预构建中的批处理文件执行的,然后我通过 ScriptBundle 包含它,其中 IncludeDirectory 指向 app_built 目录。我的目的是在所有文件通过 Grunt 进行最小安全保护后,使用 .NET 4.5 的捆绑功能来完成 Javascript 的其余缩小和串联操作。
我使用以下命令指定最小安全文件的路径:
bundles.Add(new ScriptBundle("~/bundles/minSafed")
.IncludeDirectory("~/app_built/", "*.js", true));
如果我在本地计算机上运行它,它可以正常运行。正如我所期望的那样,Javascript 被缩小并捆绑在一起,并且生成的 Web 应用程序也运行良好。
如果我将网站发布到远程服务器,则会收到“目录不存在。参数名称:directoryVirtualPath”的服务器错误。我认为此错误表明它无法找到填充有我的许多 *.js 文件的目录。我还假设这是因为它们没有发布,因为它们不是解决方案的一部分,即使它们所在的文件夹是解决方案的一部分(它在解决方案资源管理器中只是空的) Visual Studio)。
如果我的假设是正确的,我该怎么做才能将这些文件添加到我的解决方案中,以便每次都能轻松地将它们与我的 Web 应用程序的其余部分一起发布?
如果我的假设不正确,我能做些什么来解决这个问题?
谢谢!
最佳答案
我从来没有找到解决这个问题的好方法。我在http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx找到了信息这似乎相关,但我无法使其工作。
相反,因为我知道输出文件的名称,所以我只是在我的项目中创建了这样一个空文件,并在需要的地方引用它。然后,我让预构建任务将该文件的内容替换为外部缩小版本,并且根据需要将其与项目打包在一起,因此它运行得很好。
关于javascript - VS2013 : Publish minified bundle created on files outside of the project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21840001/