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

VS2019构建时多级引用的nuget程序集未复制到应用输出目录问题

问题答复

是的,不需要在应用项目C中直接引用程序集A,通过以下配置即可实现自动将A输出到C的构建目录:

方案1:修改程序集B的NuGet引用配置(适用于PackageReference引用格式)

该问题的核心原因是默认NuGet引用的PrivateAssets属性会截断运行时依赖的传递链,操作步骤如下:

  • 右键点击程序集B项目,选择「编辑项目文件」
  • 找到程序集A对应的PackageReference节点,默认配置类似如下:
    <PackageReference Include="程序集A的包名" Version="x.x.x">
      <PrivateAssets>contentfiles;analyzers;build</PrivateAssets>
    </PackageReference>
    
  • 要么直接删除<PrivateAssets>这一行,要么将其值修改为none:
    <PackageReference Include="程序集A的包名" Version="x.x.x" PrivateAssets="none" />
    
  • 重新构建整个解决方案即可,程序集A会自动随B的依赖传递到C的输出目录。

方案2:全局开启程序集B的依赖复制(适用于所有SDK风格项目)

如果不想单独修改单个包的配置,可以直接强制让B的所有依赖都参与传递复制:

  • 编辑程序集B的项目文件,在第一个<PropertyGroup>节点中添加如下配置:
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    
  • 重新构建解决方案即可生效,该配置会让B的所有NuGet/项目依赖都默认复制到输出目录,同时自动传递给上游引用项目C。

方案3:适配packages.config引用格式

如果你的项目仍在使用旧版的packages.config管理NuGet包,操作如下:

  • 在程序集B的引用列表中找到程序集A,右键点击选择「属性」
  • 将属性中的「复制本地」选项设置为True
  • 确保应用C对程序集B的引用的「复制本地」属性也为True,重新构建即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:36:08