我已经为我的公共项目(这是一个NuGet包)安装了AsyncUsageAnalyzers,我希望在依赖它的所有包/应用程序中强制执行这些规则。
我已经更改了UseConfigureAwait
规则的严重性,并且已经创建了.ruleset。
我已阅读https://stackoverflow.com/a/20271758/2663813,我需要一个具有给定结构的NuGet包。该断言已经在https://stackoverflow.com/a/46115423/2663813
确认我现在拥有的:
构建/ Common.ruleset
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="My common analyzer rules" Description="The rules that are enforced on all of my projects" ToolsVersion="10.0">
<Rules AnalyzerId="AsyncUsageAnalyzers" RuleNamespace="AsyncUsageAnalyzers">
<Rule Id="UseConfigureAwait" Action="Error" />
</Rules>
</RuleSet>
构建/ My.Package.Id.targets
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)Common.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>
在我的.csproj
中<Import Project="build\My.Package.Id.targets" />
我的问题是:既然我已经完成了这项规则并且规则已正确应用于我的项目,那么如何在build/
内添加build/
内的NuGet包中的文件{{1}文件夹?我知道我可以使用链接中提到的.nuspec文件来做到这一点,但我想用新的.csproj语法来做。
答案 0 :(得分:3)
很抱歉发布得太快,我只是在我眼前找到了解决方案:
在页面https://docs.microsoft.com/en-us/dotnet/core/tools/csproj#nuget-metadata-properties中,MarkPflug在评论中提供了翻译和引用 https://docs.microsoft.com/en-us/nuget/schema/msbuild-targets#pack-scenarios供参考。
在我的情况下,我需要使用PackagePath
,如下所示(Content
也可以,但正如Martin Ullrich指出的那样,None
在这里是更好的选择):
<ItemGroup>
<None Include="build\**" Pack="True" PackagePath="build\" />
</ItemGroup>