如何在Visual Studio的构建后事件中访问构建警告

本文关键字:构建 事件 访问 警告 Visual Studio | 更新日期: 2023-09-27 18:06:23

一般任务。我的任务是使构建(一组 c# 项目)失败,如果存在这样的dll,没有找到,因此没有复制到输出文件夹。似乎相应的警告不是编译器的警告,因此我无法为Visual Studio中的"将警告视为错误"选项提供警告代码。我发现的解决方法是使用MsBuild,就像这里描述的那样。然而,我仍然找不到任何解决方案的构建与Visual Studio

。是否有一种方法可以在Visual Studio的构建后事件中获得构建日志,特别是构建警告,并且如果存在一些确切的警告,则使构建失败?

我看的。看这里,但建议宏不是一个方便的解决方案。根据这个和这个, Visual Studio不保存 c# 项目的构建日志。

更具体的。我被要求提供关于我想犯错误的具体警告的信息。这是MSB3245:无法解析此引用。无法定位组装…"

如何在Visual Studio的构建后事件中访问构建警告

您可以在AfterBuild目标中检查文件。例如:

<Target Name="AfterBuild">
    <Error Condition="Exists('$(MSBuildProjectDirectory)'bin'Debug'ClassLibrary1.pdb')==false" Text="file not exist"/>
  </Target>

我被要求从当前问题的讨论和我公司的经验中得出结论。

。对于托管代码项目,没有办法"在Visual Studio的构建后事件中访问构建警告"(不包括一些非常特殊的情况,请参阅关于TFS的建议)。

解决方案。目前,我们使用MsBuild来捕获警告并将其转换为错误,如下所述。因此,当开发人员使用标准的Visual Studio(或ReSharper)构建过程时,他们无法访问此功能。然而,我们的持续集成服务器恰好使用MsBuild,因此它会通知我们我们感兴趣的警告和错误。

其他因素

  1. 如果MsBuild中的"将警告视为错误"功能被引入,则可以将其用于类似目的。可以创建一个特殊的MsBuild任务来分析项目文件(.csproj)中的引用,并将这些引用与复制到输出文件夹中的文件进行比较。此任务必须注入到每个必要的项目文件中。TFS的一些组件可能保存构建日志(不熟悉这个)。