如何在没有.nuspec

时间:2017-11-02 13:53:31

标签: nuget csproj

我已经为我的公共项目(这是一个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语法来做。

1 个答案:

答案 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>