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

.NET和C#中非NuGet第三方DLL的规范处理及存放位置咨询

.NET解决方案中第三方本地DLL的依赖处理最佳实践

现有.NET解决方案结构如下:

folder tree:
-> SLN   
  -> Project 1(启动项目)
  -> Project 2(类库项目)

需要在两个项目中引用未发布到NuGet的第三方库example.dll,以下是符合.NET最佳实践的存放位置和惯用处理方式:

一、DLL的最佳存放位置

按照.NET社区通用最佳实践,不要把DLL放在单个项目目录下,而是在解决方案根目录(SLN文件夹)下创建统一的第三方依赖目录,比如命名为Libs或ThirdParty,还可根据库名/版本进一步细分,方便管理。最终结构如下:

-> SLN   
  -> Libs
    -> Example
      -> example.dll
  -> Project 1(启动项目)
  -> Project 2(类库项目)

这样做的好处是所有项目都能从统一相对路径引用,便于团队协作同步依赖,也避免重复复制DLL到多个项目目录。

二、引用DLL的惯用方式

针对.NET Framework项目

  • 右键目标项目 → 选择「添加引用」→ 浏览到SLN/Libs/Example/example.dll完成添加
  • 选中刚添加的引用,在属性面板把「复制本地」设为True,编译时DLL会自动复制到项目输出目录,保证运行时能找到
  • 记得把Libs目录加入版本控制系统(比如Git),确保所有团队成员能获取相同依赖文件

针对.NET Core/.NET 5+项目

有两种常用方案,推荐第二种长期维护更方便:

  1. 直接引用DLL
    • 右键项目 → 「添加」→ 「引用」→ 「浏览」选择目标DLL即可
    • 也可手动编辑.csproj文件,添加以下配置:
      <ItemGroup>
        <Reference Include="example">
          <HintPath>..\Libs\Example\example.dll</HintPath>
          <Private>True</Private> <!-- 作用等同于.NET Framework的「复制本地」 -->
        </Reference>
      </ItemGroup>
      
  2. 打包为本地NuGet包(推荐)
    把example.dll打包成本地NuGet包,可像管理官方NuGet依赖一样进行版本更新和依赖管理,步骤如下:
    • 编写.nuspec配置文件(示例):
      <?xml version="1.0"?>
      <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
        <metadata>
          <id>Example.Library</id>
          <version>1.0.0</version>
          <authors>ThirdParty</authors>
          <description>第三方示例类库</description>
        </metadata>
        <files>
          <file src="Libs/Example/example.dll" target="lib/net6.0" /> <!-- 根据项目目标框架调整路径 -->
        </files>
      </package>
      
    • 使用nuget pack命令生成.nupkg文件
    • 在Visual Studio的NuGet包管理器中添加本地源(指向存放.nupkg的目录),之后两个项目即可通过NuGet包管理器安装这个本地包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:20:30