如何在没有.nuspec的情况下将文件添加到csproj NuGet包中的构建文件夹

How to add files to build folder in csproj NuGet package without .nuspec

我已经为我的公共项目(它是一个 NuGet 包)安装了 AsyncUsageAnalyzers,我希望在依赖它的所有 packages/applications 中强制执行这些规则。 我更改了 UseConfigureAwait 规则的严重性,并创建了一个 .ruleset。

我已阅读 that I needed to have a NuGet package with a given structure. That assertion has been confirmed here

我现在拥有的:

build/Common.规则集

<?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>

build/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" />

我的问题是:既然我已经完成了这些并且规则已正确应用到我的项目中,我该如何在 NuGet 包中添加 build/ 下的文件,在 build/ 文件夹?我知道我可以使用链接中提到的 .nuspec 文件来做到这一点,但我想使用新的 .csproj 语法来做到这一点。

抱歉发帖太快了,我刚刚在眼前找到了解决方案:

在页面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供参考。

在我的例子中,我需要按如下方式使用 PackagePathContent 也可以,但正如 Martin Ullrich 指出的那样,None 是更好的选择):

  <ItemGroup>
    <None Include="build\**" Pack="True" PackagePath="build\" />
  </ItemGroup>