Visual Studio中的多个预构建事件?

Kirschstein 23 msbuild prebuild visual-studio-2008

我跟随Scott Hanselman的博客文章来管理PreBuild Events的配置并让它运行良好.

我现在想将我的配置拆分成几个不同的文件,因此需要在构建之前再次执行该命令.问题是PreBuild事件文本全部作为一个控制台命令执行.如何将其拆分为多个命令?

Kirschstein.. 41

原来问题是Scott的例子不包括call该行开头的命令.只要您不想.bat使用不同的参数多次执行文件,这就没问题.

这个:

call "$(ProjectDir)copyifnewer.bat" "$(ProjectDir)connectionStrings.config.$(ConfigurationName)" "$(ProjectDir)connectionStrings.config"
call "$(ProjectDir)copyifnewer.bat" "$(ProjectDir)appSettings.config.$(ConfigurationName)" "$(ProjectDir)appSettings.config"

对我来说很好.


Nick.. 5

我在Windows 7 64位上使用Visual Studio 2010.

我找到了一个更符合我喜欢的解决方案,我将命令链接在一起&& ^,例如编辑我的.vcxproj xml文件,如下所示:

    <PreBuildEvent>
      <Command>echo "hello 1" &amp;&amp; ^
echo "hello 2" &amp;&amp; ^
echo "hello 3"</Command>
      <Message>Performaing pre-build actions ...</Message>
    </PreBuildEvent>

我把三个命令连在一起.如果上一个命令出错,'&&'告诉shell停止执行.

请注意,在.xml文件中,无法&&直接使用,因此'&&' 必须改为使用.还要注意^字符的使用,这是cmd shell的行继续符(如BASH的\char).

每个新命令必须从行的开头开始.使用这种方法,可以根据需要链接尽可能多的命令,但如果有任何失败,链中的其余部分将不会被执行.

这是我的实际用例,我正在使用Python脚本执行一些环境检查,然后将预编译的头文件的调试文件复制到另一个子项目的目录:

    <PreBuildEvent>
        <Command>C:\Python27\python.exe "$(SolutionDir)check_path.py" 32 &amp;&amp; ^
copy "$(SolutionDir)h1ksim_lib\vc$(PlatformToolsetVersion).pdb" "$(IntDir)" /-Y > nul</Command>
        <Message>Performaing pre-build actions ...</Message>
    </PreBuildEvent>

> nul 复制命令的用法可防止在构建窗口中显示任何输出,因此我的队友在说出来时不会被吓到0 file(s) copied.

在子项目之间共享预编译头文件的参考如下:

在Visual Studio中的项目之间共享预编译的标头