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