C# 在运行';dotnet构建';,向CI发送错误消息,直至其终止

C# 在运行';dotnet构建';,向CI发送错误消息,直至其终止,c#,.net,C#,.net,我的单元测试通过TravisCI断言。当它进入步骤dotnet build时,控制台会被许多错误淹没,生成终止 当我将我的GlobalSuppressions.cs移动到顶级解决方案文件夹时,这一切就开始发生了,因为我想将StyleCop应用于所有项目,而不是其中一个项目,而不是将文件复制/粘贴到所有项目中 为此,我使用了目录.build.props,如下所示 <Project> <PropertyGroup> <TreatWarningsAsError

我的单元测试通过TravisCI断言。当它进入步骤
dotnet build
时,控制台会被许多错误淹没,生成终止

当我将我的
GlobalSuppressions.cs
移动到顶级解决方案文件夹时,这一切就开始发生了,因为我想将StyleCop应用于所有项目,而不是其中一个项目,而不是将文件复制/粘贴到所有项目中

为此,我使用了
目录.build.props
,如下所示

<Project>
  <PropertyGroup>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
  </PropertyGroup>

    <ItemGroup>
    <Compile Include="$(SolutionDir)GlobalSuppressions.cs" />
    <PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>
</Project>

真的
全部的
运行时间;建设;本地人;内容文件;分析仪;可传递的
在任何IDE(如Rider、Visual Studio 2019)中,我都不会在项目中收到任何警告,并且GlobalSuppressions.cs将正确应用于我的所有项目

当我在任何操作系统上构建
dotnet
时,它似乎不知道
GlobalSuppressions.cs
已经存在,并且错误泛滥


如何让
dotnet build
在构建时接受
GlobalSuppressions.cs
?我不知道为什么它在通过某些IDE进行编译时对任何开发人员都能正常工作,但在命令行中却不能正常工作。

我不得不采取不同的方法来解决这个问题。我做了以下工作:

1) 删除了
GlobalSuppressions.cs
(或者更确切地说,将其从项目中删除,但将该文件保留在另一个地方,以便我有规则参考)

2) 查阅了PackageReference,在撰写本文时,它位于最新版本上,如下所示:

<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
 </PackageReference>
5) 最重要的是确保删除任何项目文件中剩余的空
。如果这些都存在,在编写时,它将打乱代码分析,并假定所有内容都默认为打开(您几乎肯定不希望这样)。从
.csproj
文件中删除它们就足够了

完成上述操作后,我的所有项目现在都在使用最新的.NET StyleCop分析,它将自动应用于我的解决方案中的所有项目

最后一点注意事项:执行此操作时要小心,有一次它决定在未经我允许的情况下应用一系列样式修复,并对数千个文件进行了修改

编辑:请注意,VS可能是一种痛苦,即使存在目录.Build.props,也会无缘无故地开始插入
。我不知道它为什么会这样,或者是什么触发了它,但有时我不得不删除它。我可能必须更改它,以便在每个
.csproj
文件中手动设置
$(SolutionDir)Rules.ruleset
,如果它继续这样做的话。我们拭目以待。

这是一个驾车经过的。。。有帮助吗?
<Project>
  <PropertyGroup>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <CodeAnalysisRuleSet>$(SolutionDir)Rules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>
</Project>