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

如何在加载C# .NET 6.0 DLL时一并加载其依赖引用?

解决.NET 6控制台项目中DLL依赖自动加载的问题

优先用项目引用代替直接DLL引用

如果你的类库项目和控制台项目在同一个解决方案下,直接添加项目引用是最省心的方式,MSBuild会自动处理依赖传递:

  • 右键控制台项目 → 添加 → 项目引用
  • 勾选你的类库项目,确认后,类库中所有NuGet依赖(比如Microsoft.Data.SqlClient)会自动被控制台项目继承,无需手动逐个添加。

修改类库项目的依赖传递配置

如果必须保持类库项目的独立引用(比如不在同一个解决方案),可以修改类库项目的.csproj文件,让NuGet依赖能传递给引用它的项目:
找到类库中对应NuGet包的PackageReference节点,将PrivateAssets设为none(默认是all,会阻止依赖传递):

<PackageReference Include="Microsoft.Data.SqlClient" Version="5.1.1">
  <PrivateAssets>none</PrivateAssets>
</PackageReference>

这样当控制台项目引用该类库时,对应的NuGet包会自动被引入。

强制复制所有依赖到输出目录

如果是直接引用已编译的DLL文件(而非项目引用),可以在控制台项目的.csproj中添加以下配置,确保所有依赖的程序集都被复制到输出目录:

<PropertyGroup>
  <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

这个配置会让MSBuild把所有通过锁文件(obj/project.assets.json)追踪到的依赖都复制到输出目录,包括类库间接引用的包。

打包类库为NuGet包(长期方案)

如果这个类库需要被多个项目复用,建议将它打包成NuGet包:

  • 在类库项目的.csproj中配置必要的元数据(如包名、版本)
  • 执行dotnet pack生成NuGet包
  • 控制台项目直接通过NuGet引用这个包,所有依赖会自动被解析和加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:18:27