C# Set 属性 Copy to output directory to always from Nuget for PackageReference 项目

C# Set property Copy to output directory to always from Nuget for PackageReference Projects

我有一个包含一组 xsd 文件的多目标框架库。我想将这个库打包为一个 nuget,并将那些 xsd 添加到 nuget。为此,我使用的是 .cproj 方法而不是 .nuspec 文件。

文件的实际添加没有问题,唯一的问题是我希望能够在安装 Nuget 时将文件 属性“复制到输出目录”设置为“始终”。

我在 Whosebug 上多次使用 install.ps1 文件,这实际上为 .NET Framework 项目中包含的文件设置了 属性。但是,当您将 nuget 添加到 .NET Core 或 .NET Standard 项目时,它不会对文件执行任何操作。我认为这是因为 .NET Framework 使用 package.config 方法,而 .NET Core 和 .NET Standard 使用 PackageReference。

我的 .csproj 文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;netcoreapp2.1;net45</TargetFrameworks>
    <Version>1.0.11</Version>
  </PropertyGroup>

  <ItemGroup>
    <None Update="XSD\V202001\Voorbeeld\Common.xsd" Pack="true">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="XSD\V202001\Voorbeeld\Specific.xsd">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

  <ItemGroup>
    <Content Include="XSD/**/*.*" copyToOutput="true">
      <IncludeInPackage>true</IncludeInPackage>
      <CopyToOutput>true</CopyToOutput>
      <BuildAction>none</BuildAction>
      <copyToOutput>true</copyToOutput>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  
  <ItemGroup>
    <Content Include="tools\install.ps1">
      <PackagePath>tools\</PackagePath>
    </Content>
  </ItemGroup>
</Project>

包资源管理器中的 nuget 的外观:

有人可以告诉我如何将所有框架的 属性 设置为始终吗?

解决这个问题的方法是设置一个额外的 属性 来激活复制到输出

改变这个:

<ItemGroup>
    <Content Include="XSD/**/*.*" copyToOutput="true">
        <IncludeInPackage>true</IncludeInPackage>
        <CopyToOutput>true</CopyToOutput>
        <BuildAction>none</BuildAction>
        <copyToOutput>true</copyToOutput>
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
</ItemGroup>

<ItemGroup>
    <Content Include="XSD/**/*.*" copyToOutput="true">
        <BuildAction>none</BuildAction>
        <PackageCopyToOutput>true</PackageCopyToOutput>
    </Content>
</ItemGroup>

解决了我的问题。