将 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>
这会将此包的所有内容文件复制到输出文件夹中,包括传递引用此包的情况。
我有一个 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>
这会将此包的所有内容文件复制到输出文件夹中,包括传递引用此包的情况。