我跟着博客文章由Scott Hanselman在对与预生成事件管理配置和有工作的罚款。
现在我想我的配置分成了几个不同的文件,因此需要构建之前再次exectue的命令。 问题是预生成事件文本都被作为一个控制台命令执行。 我怎样才能把它分解了几个命令?
我跟着博客文章由Scott Hanselman在对与预生成事件管理配置和有工作的罚款。
现在我想我的配置分成了几个不同的文件,因此需要构建之前再次exectue的命令。 问题是预生成事件文本都被作为一个控制台命令执行。 我怎样才能把它分解了几个命令?
原来,问题是斯科特的例子不包括call
在该行的启动命令。 这只要你不想执行是好的.bat
多次使用不同的参数文件。
这个:
call "$(ProjectDir)copyifnewer.bat" "$(ProjectDir)connectionStrings.config.$(ConfigurationName)" "$(ProjectDir)connectionStrings.config"
call "$(ProjectDir)copyifnewer.bat" "$(ProjectDir)appSettings.config.$(ConfigurationName)" "$(ProjectDir)appSettings.config"
工作对我罚款。
我使用的Windows 7 64位的Visual Studio 2010。
我发现了一个解决方案,是更好的我喜欢的,我与链接命令一起&& ^
,例如,编辑我.vcxproj xml文件,如下所示:
<PreBuildEvent>
<Command>echo "hello 1" && ^
echo "hello 2" && ^
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 && ^
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项目之间共享预编译头
你应该能够放在一个单独的行的命令,然后在每个命令将按顺序执行。 另外,一个“骗子”的方式做同样的事情如下: