【问题标题】:How to add files to build folder in csproj NuGet package without .nuspec如何在没有.nuspec的情况下将文件添加到csproj NuGet包中的构建文件夹
【发布时间】:2017-11-02 13:53:30
【问题描述】:

我已经为我的公共项目(这是一个 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" />

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

【问题讨论】:

    标签: nuget csproj


    【解决方案1】:

    抱歉发得太快了,我刚刚在我眼皮底下找到了解决方案:

    在页面 https://docs.microsoft.com/en-us/dotnet/core/tools/csproj#nuget-metadata-properties 中,在 cmets 中,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>
    

    【讨论】:

    • 如果项目已经在您的项目中(可能作为None 构建操作),您可以执行&lt;None Update="…" Pack="true" … /&gt; 而不是内容包含而不是同一文件的多个项目,这可能会混淆VS改变或移动事物。
    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多