You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建可将文件复制到消费者构建输出的NuGet包

解决.NET Framework 4.8项目通过PackageReference引用NuGet包时非DLL文件无法复制到输出目录的问题

问题核心是PackageReference模式下,旧的content目录规则不再生效,必须改用contentFiles目录配合正确的元数据配置,才能让非DLL文件自动复制到消费者项目的输出目录。以下是无需额外创建csproj的解决方案:

1. 修正nuspec文件配置

直接修改你的my.nuspec,确保包含以下关键配置:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>myNuGetPackage</id>
    <version>1.0.0</version>
    <title>My NuGet Package</title>
    <authors>Your Name</authors>
    <description>Package containing DLL, TLB and TXT files</description>
    <!-- 明确目标框架依赖 -->
    <dependencies>
      <group targetFramework=".NETFramework4.8" />
    </dependencies>
    <!-- 核心配置:指定contentFiles的默认复制规则 -->
    <contentFiles>
      <files include="any/net48/**/*" buildAction="None" copyToOutput="true" flatten="false" />
    </contentFiles>
    <!-- 确保包不会被当作开发依赖忽略 -->
    <developmentDependency>false</developmentDependency>
  </metadata>
  <files>
    <!-- DLL文件放到lib目录,自动被项目引用 -->
    <file src="some.dll" target="lib/net48" />
    <!-- 非DLL文件放到contentFiles对应框架目录 -->
    <file src="some.tlb" target="contentFiles/any/net48" />
    <file src="some.txt" target="contentFiles/any/net48" />
    <file src="some.xml" target="contentFiles/any/net48" />
  </files>
</package>

关键配置说明:

  • contentFiles目录结构:必须遵循contentFiles/{language}/{framework}格式,.NET Framework项目用any作为语言通配符,net48对应目标框架版本。
  • contentFiles元数据:include="any/net48/**/*"批量匹配该目录下所有文件,buildAction="None"避免被当作编译文件,copyToOutput="true"强制复制到输出目录。
  • developmentDependency:设为false确保包不会被消费者项目的开发依赖过滤规则忽略。

2. 重新打包并测试

执行打包命令:

nuget.exe pack my.nuspec -OutputDirectory ./nupkg

打包完成后,可解压myNuGetPackage.nupkg验证:

  • lib/net48下存在some.dll
  • contentFiles/any/net48下存在some.tlb、some.txt等文件
  • 包内的[Content_Types].xml中已正确包含这些非DLL文件的类型映射

最后在.NET Framework 4.8项目中通过PackageReference引用该包,构建后即可看到所有文件被复制到项目的二进制输出目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:01:28