我想在每次构建之前运行一些自定义批处理代码。在VS11/C#应用程序中,我可以在项目设置中设置预生成事件。我无法在javascript metro VS11解决方案中找到类似的设置。如何在VS11中为JavaScript metro应用程序创建预构建步骤?
任何人都知道它在哪里,或者如果选项不见了(!)我可以采取什么样的解决方法呢?
我想在每次构建之前运行一些自定义批处理代码。在VS11/C#应用程序中,我可以在项目设置中设置预生成事件。我无法在javascript metro VS11解决方案中找到类似的设置。如何在VS11中为JavaScript metro应用程序创建预构建步骤?
任何人都知道它在哪里,或者如果选项不见了(!)我可以采取什么样的解决方法呢?
可以使用BeforeBuild目标在Visual Studio .jsproj文件来实现这一点:
<Target Name="BeforeBuild"></Target>
<Target Name="AfterBuild"></Target>
到这里:
取消注释BeforeBuild目标并在其中添加自定义步骤。您可以使用该元素来执行命令行脚本;在C#预生成步骤中可以使用相同的$变量(例如$(ProjectDir))。您可以做的不仅仅是在目标中调用命令行脚本,但这与您通常使用C#预生成步骤完成的操作最为接近。
作为一个例子,下面的代码会调用一个名为processFile.bat的批处理文件,将项目根目录中的default.js路径和输出路径传递给项目输出目录中的名为output.js的文件在调试模式下例如/ bin中/调试):
<Target Name="BeforeBuild">
<Exec Command="processFile.bat "$(ProjectDir)default.js" "$(OutDir)output.js"">
</Target>
注:& QUOT;是在Command参数内部的目的,这确保了这两个参数在传递给processFile.bat时被引用,并通过cmd.exe调用。
不要忘记添加DisableFastUpToDateCheck标志。否则,VisualStudio将绕过使用MSBuild,并且在计算没有更改时通常不会调用任何目标。 – deepelement
您还需要在末尾使用“退出0”结束脚本,否则会引发构建错误代码2 –