在Visual Studio中的多个预生成事件?(Multiple Pre-Build Events

2019-07-19 09:04发布

我跟着博客文章由Scott Hanselman在对与预生成事件管理配置和有工作的罚款。

现在我想我的配置分成了几个不同的文件,因此需要构建之前再次exectue的命令。 问题是预生成事件文本都被作为一个控制台命令执行。 我怎样才能把它分解了几个命令?

Answer 1:

原来,问题是斯科特的例子不包括call在该行的启动命令。 这只要你不想执行是好的.bat多次使用不同的参数文件。

这个:

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

工作对我罚款。



Answer 2:

我使用的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的\字符)。

每一个新的命令必须在该行的起点开始。 使用这种方法,可以链许多命令,一个希望,但如果任何失败,在链中的其余部分将得不到执行。

这里是我的实际用例,我有一个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项目之间共享预编译头



Answer 3:

你应该能够放在一个单独的行的命令,然后在每个命令将按顺序执行。 另外,一个“骗子”的方式做同样的事情如下:

  • 创建运行的新功能所需部分的第二批处理文件,然后创建一个运行两个组件批处理文件父批处理,并运行在您的预生成事件新的一批。 例如:batch1.bat修改文件1,batch2.bat修改文件2,然后batch3.bat同时运行batch1.bat和batch2.bat


文章来源: Multiple Pre-Build Events in Visual Studio?