如何通过CLI在传统非SDK格式项目中引用NuGet包?
传统非SDK项目引用dotnet pack生成的NuGet包的正确方法
先确保NuGet能找到你的本地包
先用NuGet命令行添加本地包源(如果还没加的话):
nuget sources add -name "LocalNuGet" -source "你存放dotnet pack生成的.nupkg文件的目录路径"
如果已经添加过本地源,可跳过这一步。
方法一:通过packages.config配置(适用于多数传统项目)
- 找到项目根目录下的
packages.config文件,没有的话直接新建一个。 - 在文件里添加你的包引用,格式如下:
<?xml version="1.0" encoding="utf-8"?> <packages> <!-- 其他已有包引用 --> <package id="你的NuGet包ID" version="包的版本号" targetFramework="项目目标框架(如net472)" /> </packages>
- 保存文件后,在项目根目录运行NuGet还原命令:
nuget restore
方法二:直接修改.csproj文件
如果你的项目不使用packages.config,直接编辑.csproj文件:
- 在文件中找到或新建
<ItemGroup>节点,添加程序集引用:
<ItemGroup> <!-- 其他已有引用 --> <Reference Include="你的包程序集名称, Version=包版本号, Culture=neutral, PublicKeyToken=你的包公钥令牌(无则留空)"> <HintPath>..\packages\你的包ID.版本号\lib\目标框架(如net472)\你的包程序集名称.dll</HintPath> <Private>True</Private> </Reference> </ItemGroup>
- 注意
HintPath要对应NuGet包解压后的实际路径,通常是项目根目录下的packages文件夹内的对应位置。 - 同样先运行
nuget restore确保包已被下载到本地。
构建失败的常见排查点
- 目标框架不匹配:确认你的NuGet包的目标框架和项目的目标框架兼容,比如项目用net462,包不能是net6.0这种不兼容的版本。
- 路径错误:检查
HintPath的路径是否正确,拼写错误或目录结构变化都会导致找不到程序集。 - 依赖缺失:如果你的NuGet包依赖其他包,要确保这些依赖也被正确添加到项目中(同样通过packages.config或csproj引用)。
- 清理缓存:运行
msbuild /t:Clean清理旧构建文件,再执行msbuild /t:Build重新构建。
内容的提问来源于stack exchange,提问作者dododo
相关产品推荐
相关产品推荐

