c# - 在 TeamCity 中验证 StyleCop

标签 c# msbuild teamcity stylecop

我正在尝试让 TeamCity 构建我的 C# 解决方案并执行 StyleCop,如果存在任何违规行为,构建将失败。我希望它的执行方式与您在 Visual Studio 的解决方案资源管理器中右键单击解决方案然后单击 Run StyleCop 时的执行方式相同,只是我希望将警告视为错误。

我已经尝试了 this answer 中的建议,但是我在实现它时遇到了一些问题。

问题是:

<CreateItem Include="$(SourceFolder)\**\*.cs">

在文件夹结构中包含所有 .cs 文件,并且不遵守每个项目的单独 StyleCop 设置(例如要排除的文件)。

另一种选择是拥有一个 build.xml 文件,以便它可以被 MSBuild 引用。然而,这将意味着维护 XML 文件以及 .sln 文件。我确实找到了 this answer这意味着您可以像这样在 XML 中包含解决方案引用

  <include name="MyTopSecretApplication.sln"/>

但由于某些原因,当我将 CreateItem 设置为

时,它没有传递编译后的文件
<CreateItem Include="@(Compile)">

如果 condition 已设置(如下所示),理论上应该传递编译文件并遵守包含/排除设置(我猜是因为 XML 文件包含 . sln 表示编译后的文件没有通过)。

Condition="('%(Compile.ExcludeFromStyleCop)' != 'true') and ('%(Compile.ExcludeFromSourceAnalysis)' != 'true')"

有什么好方法可以让 MSBuild 在 TeamCity 中构建我的解决方案文件,验证是否遵循了 StyleCop 规则,并遵守每个项目的 StyleCop 规则?

最佳答案

下面是我如何让它在我的环境中工作

  • 使用 Visual Studio 让 StyleCop 在您的开发机器上按照您希望的方式工作。我使用 NuGet 执行此操作包,但只要您在出现 StyleCop 问题时收到构建警告,那么您就很好。
  • 要将 StyleCop 警告转化为错误,请编辑每个 csproj 文件并在相关构建配置部分中创建一个值为 falseStyleCopTreatErrorsAsWarnings 元素,例如我只为发布版本执行此操作。参见 this有关这方面的更多详细信息,请访问博客。
  • 只需让 TeamCity 构建您的解决方案,由于 StyleCop 警告现在是错误,如果存在任何 StyleCop 问题,构建将失败。

关于c# - 在 TeamCity 中验证 StyleCop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979256/

相关文章:

c# - OpenXml 电子表格。值过滤器、样式和 unicode 字符

msbuild - MSBuild 中的电子邮件错误 - ReadLinesFromFile "is being used by another process"

c# - msbuild 命令行尚不支持 WebPublishMethod(FileSystem)

c++ - 如何在 Visual Studio 中支持复杂的项目配置?

deployment - 在 Team City 中运行构建时如何提示用户手动输入参数?

msbuild - 只有由TeamCity建立的 SandcaSTLe build 失败

build - 来自 TeamCity 中相同构建配置的工件依赖项

C# 加密和解密文件流 : System. Runtime.Serialization.SerializationException

c# - 将变量传递给c#中的不同方法

c# - 如何从带有 NSubstitute 的模拟对象返回一个对象(即 List<string>)?