Visual Studio 2013中C#项目编译失败时如何跳过生成后事件?
解决VS2013 C#项目编译失败时跳过生成后事件的问题
兄弟,你遇到的这个情况确实挺闹心的——编译失败了还白跑一遍耗时的转译器,太浪费时间了。其实在VS2013的C#项目里,是可以让生成后事件只在编译成功时才执行的,下面给你两种靠谱的解决方法:
方法一:在生成后事件命令行里添加条件判断
打开你的项目属性,找到「生成事件」→「生成后事件命令行」,把原来的转译器命令改成带条件的格式:
if "%BuildSuccess%"=="True" ( 你的转译器完整命令 )
这里的%BuildSuccess%是VS提供的内置宏,编译成功时会被替换成True,失败时则是False,这样就能确保只有编译通过才会触发转译器。
方法二:直接编辑.csproj项目文件(更可靠)
如果第一种方法没生效,或者你想更精准控制,直接修改项目文件是最稳妥的:
- 右键项目→「卸载项目」,然后右键→「编辑xxx.csproj」
- 在文件里找到
AfterBuild目标(如果没有就自己添加),给它加上条件判断:
<Target Name="AfterBuild" Condition="'$(BuildSuccess)' == 'True'"> <Exec Command="你的转译器完整命令" /> </Target>
- 保存文件,重新加载项目。这样每次只有当编译成功后,这个
AfterBuild目标才会执行转译器。
为啥你现在的设置会失败时还跑?
大概率是因为你的生成后事件没有添加任何条件判断,虽然理论上C#项目的生成后事件默认应该在成功后执行,但可能因为某些自定义配置或者VS2013的小细节,导致它跳过了成功检查。加上上面的条件就能彻底解决这个问题。
内容的提问来源于stack exchange,提问作者superjoebob




