将 NuGet contentFiles 传递复制到引用的项目

Copy NuGet contentFiles transitively to referenced project

我有一个 NuGet 包,其中有一个额外的文件,打包为 contentFiles 文件夹中的 Content

然后我有两个带有 SDK 样式 .csproj 的 C# 项目 - A 和 B,其中 项目 B 引用 项目 A 作为 ProjectReference 并且 Project A 中有一个 NuGet 包 的经典 PackageReference,如下所示:

NuGet 包 ← 项目 A ← 项目 B

我的问题是额外的文件被正确地复制到项目 A 的构建输出中,但它不会被复制到项目 B 的输出中,除非我手动执行。

有没有办法强制将额外文件从 NuGet 依赖项传递到项目 B 构建输出?

我能想到的唯一方法是自定义 Post-build event with xcopy 命令,但它更像是一种解决方法,而不是真正的解决方案。

感谢您提前提出任何建议!

如果您控制着 NuGet 包

您可以添加额外的构建目标,您可以在其中指定应复制的内容文件。

build/MyNuGetPackage.targets 添加到 NuGet 包中:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>

    <!-- For all files in /contentFiles -->
    <Content Include="$(MSBuildThisFileDirectory)..\contentFiles\**\*.*">
      <!-- Copy to output directory on build -->
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>

  </ItemGroup>
</Project>

这会将此包的所有内容文件复制到输出文件夹中,包括传递引用此包的情况。