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

Mar*_*bel 5 .net c# nuget nuget-package

我有一个NuGet包中,被打包成一个额外的文件内容contentFiles文件夹。

然后,我有两个C#项目SDK风格的.csproj - A和B,其中项目B引用项目AProjectReference,有一个经典的PackageReference一个的NuGet包A计划是这样的:

NuGet 包?项目A?项目B

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

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

我能想到的唯一方法是使用命令自定义构建后事件xcopy但这更像是一种解决方法,而不是真正的解决方案。

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

Bru*_*ell 6

如果您可以控制 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>
Run Code Online (Sandbox Code Playgroud)

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