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

时间:2016-09-09 08:35:39

标签: c# visual-studio msbuild

常规任务。我的任务是使(如果有一组 C#项目)的构建失败,如果存在未找到的这样的DLL,因此没有复制到输出文件夹。似乎相应的警告不是编译器的警告,因此我不能将警告代码提供给"将警告视为错误" Visual Studio中的选项。我找到的解决方法是使用 MsBuild ,就像描述here一样。但是我仍然找不到任何使用 Visual Studio 进行构建的解决方案。

问题即可。有没有办法获取构建日志,尤其是在 Visual Studio 中的构建后事件中构建警告,并且如果存在某些确切警告,则构建失败?

我看了什么。看了here,但建议宏不是一个方便的解决方案。 根据{{​​3}}和this Visual Studio 不保存 C#项目的构建日志。

更具体。我被要求提供有关我想要出错的具体警告的信息。这是" MSB3245:无法解析此引用。无法找到程序集......"

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我被要求在讨论当前问题和我公司的经验时发表结论。所以就是这样。

<强>答案即可。没有办法在 Visual Studio &#34;中的后期构建事件中访问构建警告。对于托管代码项目(不包括一些非常具体的案例,请参阅有关 TFS 的建议)。

解决方法即可。目前,我们使用 MsBuild 来捕获警告并将其转换为错误,如here所述。因此,开发人员在使用标准 Visual Studio (或 ReSharper )构建过程时无法访问此功能。但是,我们的持续集成服务器完全使用 MsBuild ,因此它会告诉我们我们感兴趣的警告和错误。

其他注意事项

  1. 如果引入了"Treat warnings as errors" functionality in MsBuild,可以将其用于类似目的。
  2. 可以创建一个特殊的 MsBuild 任务,分析项目文件(.csproj)中的引用,并将此引用与复制到输出文件夹的文件进行比较。必须在每个必要的项目文件中注入此任务。
  3. TFS 的某些组件可能会保存构建日志(不熟悉此内容)。