You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

执行dotnet build时无法找到私有NuGet包,如何配置私有源?

解决.NET Core 2.0独立部署时找不到私有NuGet包的问题

这问题我之前帮同事处理过,本质就是要让dotnet命令知道你的私有NuGet源位置,下面几种方法你可以根据场景选择:

1. 全局配置私有NuGet源(所有项目生效)

如果你的开发环境经常用到这个私有源,可以直接全局添加:

dotnet nuget add source https://你的私有NuGet服务器地址 --name PrivateNuGet

要是私有源需要账号密码认证,添加的时候可以直接带上凭据:

dotnet nuget add source https://你的私有NuGet服务器地址 --name PrivateNuGet --username 你的账号 --password 你的密码

配置后,所有dotnet项目都会自动使用这个源,不用每次重复设置。

2. 项目本地配置(推荐,仅当前项目生效)

如果不想影响其他项目,更推荐在项目根目录创建一个nuget.config文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <!-- 保留官方NuGet源,避免其他公共包找不到 -->
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <!-- 添加你的私有源 -->
    <add key="PrivateNuGet" value="https://你的私有NuGet服务器地址" />
  </packageSources>
  <!-- 私有源需要认证的话,添加凭据(不建议明文密码,后面说替代方案) -->
  <packageSourceCredentials>
    <PrivateNuGet>
      <add key="Username" value="你的账号" />
      <add key="ClearTextPassword" value="你的密码" />
    </PrivateNuGet>
  </packageSourceCredentials>
</configuration>

创建好这个文件后,dotnet build会自动读取配置。如果不想明文存储密码,可以用命令更新源的凭据:

dotnet nuget update source PrivateNuGet --username 你的账号 --password 你的密码 --store-password-in-clear-text

(注:--store-password-in-clear-text在Windows下会把密码存在用户目录的配置文件里,Linux/macOS则会存在明文文件中,要是对安全性要求高,可以用系统凭据管理器存储,不过.NET Core 2.0对这个的支持有限,你可以根据环境调整)

3. 构建命令临时指定源(单次生效)

如果只是临时测试,也可以在dotnet build命令里直接指定源:

dotnet build -r win10-x64 --source https://你的私有NuGet服务器地址 --source https://api.nuget.org/v3/index.json

注意这里要同时指定官方源和私有源,不然其他公共包会找不到。

额外注意事项

  • 先确认你的私有NuGet服务器地址能正常访问,比如用浏览器打开地址,看看能不能看到目标包的信息;
  • 检查项目里引用的包版本号是否正确,有没有拼写错误,很多时候“找不到包”只是版本号写错了;
  • 确保你用的.NET Core SDK是2.x版本,和netcoreapp2.0匹配,避免版本兼容问题。

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

火山引擎 最新活动