You need to enable JavaScript to run this app. 自定义NuGet依赖的外部DLL引用后无法自动复制到输出目录,如何在csproj配置?
优惠活动
大模型
产品
解决方案
定价
更多

自定义NuGet依赖的外部DLL引用后无法自动复制到输出目录,如何在csproj配置?

自定义NuGet包内嵌原生DLL自动复制到输出目录解决方案

你当前使用的<Content>配置仅会在你自己的打包项目生效,引用该NuGet包的项目默认不会继承这些DLL的CopyToOutputDirectory属性,因此需要额外配置打包规则实现自动复制。

方案1:配置contentFiles兼容SDK风格项目(推荐,适配.NET Core/.NET 5+项目)

直接修改你打包项目的csproj文件中对应DLL的配置,添加PackagePath元数据即可:

<Content Include="..\externalDlls\libnodave_jfkmod.dll">
  <Pack>true</Pack>
  <PackagePath>contentFiles\any\any\;content\</PackagePath>
  <PackageCopyToOutput>true</PackageCopyToOutput>
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  <!-- 若不想让DLL出现在引用方的项目树中,可添加下面一行 -->
  <!-- <Visible>false</Visible> -->
</Content>
<Content Include="..\externalDlls\libnodave_jfkmod64.dll">
  <Pack>true</Pack>
  <PackagePath>contentFiles\any\any\;content\</PackagePath>
  <PackageCopyToOutput>true</PackageCopyToOutput>
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>

说明:contentFiles\any\any\路径表示该文件适用于任意目标框架、任意CPU架构的引用项目,打包后会被NuGet识别为内容文件自动继承复制属性。

方案2:添加.targets文件兼容全类型项目(适配所有.NET Framework/.NET Core项目)

如果需要兼容老旧的非SDK风格.NET Framework项目,可通过在NuGet包中嵌入生成目标实现强制复制:

  1. 在你的打包项目根目录新建build文件夹,创建和你的NuGet包ID同名的.targets文件,例如包ID为MyCustomSiemensToolkit,则文件名为MyCustomSiemensToolkit.targets,内容如下:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <NativeLibs Include="$(MSBuildThisFileDirectory)..\contentFiles\any\any\*.dll" />
  </ItemGroup>
  <Target Name="CopyNativeLibs" BeforeTargets="AfterBuild">
    <Copy SourceFiles="@(NativeLibs)" DestinationFolder="$(OutputPath)" SkipUnchangedFiles="true" />
  </Target>
</Project>
  1. 在打包项目的csproj中添加配置,把这个.targets文件打包到包的对应目录:
<Content Include="build\*.targets">
  <Pack>true</Pack>
  <PackagePath>build\</PackagePath>
  <Visible>false</Visible>
</Content>

完成上述配置后重新打包,引用该包的项目编译时会自动将原生DLL复制到输出目录,无需手动修改属性。

内容的提问来源于stack exchange,提问作者Diego Erol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 03:15:07