我的csproj中有一个postbuild事件。我想忽略此命令的输出,但每当我执行命令> nul 2>& 1时,此csproj会损坏,可能是因为“>”。当我写“>”时我注意到了从postbuild窗口而不是直接编辑csproj如果被编码..是否有解决方法(除了从bat文件运行它)
答案 0 :(得分:4)
这可以使用来自自定义目标的MSBuild <Exec>
任务来完成,而不是依赖于默认的前/后构建脚本属性。
您可以将其添加到csproj文件中,而不是使用默认的pre / post构建脚本:
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="some command" IgnoreExitCode="true" />
</Target>
请注意,对于“基于sdk”的项目(ASP.NET Core,.NET Core,.NET Standard),上述格式是在Visual Studio UI中指定后期构建事件时添加的内容,但IgnoreExitCode
属性。
答案 1 :(得分:0)
我使用另一种方法:重置批处理中的errorlevel变量。当VS检查%errorlevel%时,只需将其设置为零即可忽略一条语句,例如
MD "$(SolutionDir)..\Binaries" 1>NUL 2>NUL
SET ERRORLEVEL=0
如果该文件夹已经存在,则MD设置错误级别1。我将该值覆盖为0,Visual Studio感到满意。注意:所有其他错误也将被忽略,因为如果手动分配了变量,错误级别将不再分配(在大多数情况下还可以)。
也有可能忽略这样的错误
MD "$(SolutionDir)..\Binaries" 1>NUL 2>NUL
SET ERRORLEVEL=
(删除错误级别),它不会抑制进一步的错误,但是具有的副作用是,我们要忽略的错误显示在Visual Studio的错误列表中,而不是导致错误的错误列表。稍后会在代码中出现。