gpt4 book ai didi

c# - 如何抑制 Visual Studio 2017 (C#) 中的初始生成后事件错误?

转载 作者:行者123 更新时间:2023-11-30 21:28:57 26 4
gpt4 key购买 nike

我在 Visual Studio 2017 中有一个 C# 解决方案。我还有一个名为 foobar.bat 的批处理脚本,其中包含以下代码:

echo foobar : error 1: This is a test error.           

我的目标是在构建特定项目时让上面的测试错误消息出现在 Visual Studio 的错误列表中,并在它出现时停止构建。所以我把 [path to script]\foobar.bat 放在项目的构建后事件命令行中,然后构建。现在我在 Visual Studio 错误列表中收到两条错误消息:

  1. 命令“[脚本路径]\foobar.bat”退出,代码为 -1。
  2. 这是一个测试错误。

在这种情况下,看到仅打印出我的构建后事件内容的第一条错误消息没有帮助。我想抑制这个初始错误,以便只有我的自定义错误消息显示在错误列表中(或者至少将其更改为更有用的内容)。

这是我尝试过的:

  • 2>nul 添加到我的批处理脚本的末尾没有任何效果。
  • 1>nul 添加到我的批处理脚本的末尾可以抑制两个 错误,这不是我想要的。
  • &set errorlevel=0 添加到我的批处理脚本的末尾没有任何效果。
  • 将行 exit 0 添加到我的批处理脚本的末尾没有任何效果。
  • 将以下内容添加到我的 .csproj 文件的末尾(根据 this article )抑制了第一个错误,但使构建不再失败:
<Target
Name="PostBuildEvent"
Condition="'$(PostBuildEvent)'!=''"
DependsOnTargets="$(PostBuildEventDependsOn)">
<Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" IgnoreExitCode="true" />
</Target>

最后一个选项几乎让我得到了我想要的。但是,尽管有错误消息,但错误列表不会弹出,构建也不会失败。似乎任何会导致初始错误消息不出现的事情也会导致构建不再失败。是这样吗?或者有什么方法可以让构建失败, 不会显示初始错误消息?

最佳答案

你可以做的是使用 exec和一个 error一起任务。

您需要编辑 .csproj 文件并在上面最后一个要点中的 Target PostBuildEvent 之后添加这些任务。

此解决方案的工作原理是获取 exec 任务的 ExitCodeOutput 并使用它们触发错误任务,然后该错误任务将停止构建并记录消息。< br/>Exec 任务需要三个参数:

  • IgnoreStandardErrorWarningFormatIgnoreExitCode 防止在这一步记录错误
  • ConsoleToMsBuild 参数是获取输出所必需的(在 VS 2017 中拼写为 ConsoleToMSBuild)。

所以任务看起来像这样:

  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="$(PostBuildEvent)" IgnoreStandardErrorWarningFormat="true" IgnoreExitCode="true" ConsoleToMsBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="OutputMessage" />
<Output TaskParameter="ExitCode" PropertyName="ExitCode" />
</Exec>
<Error Text="$(OutputMessage)" Condition="$(ExitCode) == 10" />
<!-- <Error Text="(optional text) : $(OutputMessage)" Condition="$(ExitCode) == 11" />
<Error Text="(optional text) : $(OutputMessage)" Condition="$(ExitCode) == 12" /> -->
</Target>

并编辑文件foobar.bat:

echo foobar : error 1: This is a test error.
exit /b 10 <-- /b parameter needed if used in a .bat file

重要的部分是exit,它将设置我们之后要使用的代码。

您可以让多个 Error 任务执行更多条件日志记录或仅按原样使用输出。

关于c# - 如何抑制 Visual Studio 2017 (C#) 中的初始生成后事件错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55853595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com