如何在 VS11 中为 javascript Metro 应用程序创建预构建步骤?

我想在每次构建之前运行一些自定义批处理代码.在 VS<11/C# 应用程序中,我可以在项目设置中设置预构建事件.我在 javascript Metro VS11 解决方案中找不到类似的设置.

I want to run some custom batch code just before every build. In a VS<11/C# app I could set the pre-build events in the project settings. I can't find similar settings in a javascript metro VS11 solution.

任何人都知道它在哪里,或者如果选项消失了(!)我可以采取什么样的解决方法来代替它?

Anyone know where it is, or if the option is gone (!) what kind of workaround I can do in its place?

推荐答案

您可以使用 Visual Studio .jsproj 文件中的 BeforeBuild 目标来完成此操作:

You can use the BeforeBuild target in the Visual Studio .jsproj file to accomplish this:

<Target Name="BeforeBuild"></Target>
<Target Name="AfterBuild"></Target>

到达这里:

  1. 在 Visual Studio 中右键单击您的项目,然后选择在 Windows 资源管理器中打开文件夹
  2. 在资源管理器中,右键单击 .jsproj 文件并选择打开方式...,然后选择记事本等编辑器
  3. 滚动到文件底部,您会注意到这两个 Target 部分已被注释掉

取消注释 BeforeBuild 目标并在其中添加您的自定义步骤.您可以使用该元素执行命令行脚本;与 C# 预构建步骤中相同的 $ 变量可用(例如 $(ProjectDir)).您可以做的不仅仅是在 Target 中调用命令行脚本,但这与您通常使用 C# 预构建步骤所做的最接近.

Uncomment the BeforeBuild target and add your custom step inside of it. You can use the element to execute a command line script; the same $ variables are available as in C# pre-build steps (e.g. $(ProjectDir)). You can do more than call command line scripts in a Target, but this is closest to what you would normally do with C# pre-build steps.

例如,以下代码将调用一个名为 processFile.bat 的批处理文件,并传递一个指向项目根目录中 default.js 的路径和一个输出路径,以在项目的输出目录中创建一个名为 output.js 的文件(例如/bin/Debug 模式):

As an example, the following code would call a batch file named processFile.bat passing it a path to default.js in the project root and an output path to create a file named output.js in the project's output directory (e.g. /bin/Debug in Debug mode):

<Target Name="BeforeBuild">
    <Exec Command="processFile.bat &quot;$(ProjectDir)default.js&quot; &quot;$(OutDir)output.js&quot;">
</Target>

注意:&quot;故意在 Command 参数中,这样可以确保两个参数在传递给 processFile.bat 并通过 cmd.exe 调用时被引用.

Note: The &quot; is on purpose inside of the Command arguments, this makes sure the two parameters are quoted when passed to processFile.bat and called via cmd.exe.

相关文章