如何在没有.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供参考。
在我的例子中,我需要按如下方式使用 PackagePath
(Content
也可以,但正如 Martin Ullrich 指出的那样,None
是更好的选择):
<ItemGroup>
<None Include="build\**" Pack="True" PackagePath="build\" />
</ItemGroup>
我已经为我的公共项目(它是一个 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供参考。
在我的例子中,我需要按如下方式使用 PackagePath
(Content
也可以,但正如 Martin Ullrich 指出的那样,None
是更好的选择):
<ItemGroup>
<None Include="build\**" Pack="True" PackagePath="build\" />
</ItemGroup>