我想在每次構建之前運行一些自定義批處理代碼。在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 –