netcoreapp2.0控制台项目NU1605包降级及私有源权限问题求助
解决你的.NET Core 2.0控制台项目依赖问题
我们一步步拆解你遇到的几个核心问题,逐个给出可行的解决方法:
1. NU1605 包降级错误
你当前的矛盾点在于:虽然手动指定了低版本的系统包,但依赖链(比如Colorful.Console → runtime.win.System.IO.FileSystem)要求更高版本的这些包,NuGet检测到版本冲突后抛出了降级错误。强行锁定低版本反而会加剧兼容性问题,因为.NET Core的基础系统包版本需要保持匹配。
解决方案:
- 把你直接引用的系统包版本升级到依赖链要求的
4.3.0,修改csproj文件中的对应引用:<ItemGroup> <!-- 替换为依赖链要求的4.3.0版本 --> <PackageReference Include="System.Diagnostics.Debug" Version="4.3.0" /> <PackageReference Include="System.Runtime.Extensions" Version="4.3.0" /> <PackageReference Include="System.Runtime.Handles" Version="4.3.0" /> <PackageReference Include="System.Runtime.InteropServices" Version="4.3.0" /> </ItemGroup> - 额外提示:对于.NET Core项目,多数系统包已经包含在
Microsoft.NETCore.App元包中,你也可以尝试移除这些手动引用,让NuGet自动解析兼容版本(如果Colorful.Console的依赖没有过于陈旧,这种方式更省心)。
2. 私有NuGet源401 Unauthorized错误
这个错误的根源是:NuGet会遍历所有配置的包源去查找依赖包,包括你的公司私有源,但私有源并没有System.Runtime.Serialization.Formatters这类微软官方包,还触发了权限验证失败。
解决方案:
- 在
NuGet.config中添加包源映射,明确指定不同前缀的包从哪个源获取,避免无效查询。修改后的配置如下:<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="mycompany" value="https://mycompany.pkgs.visualstudio.com/_packaging/Stable/nuget/v3/index.json" /> </packageSources> <!-- 新增包源映射规则 --> <packageSourceMapping> <packageSource key="nuget.org"> <package pattern="System.*" /> <package pattern="Microsoft.*" /> </packageSource> <packageSource key="mycompany"> <package pattern="YourCompany.*" /> <!-- 替换为你们公司的包前缀 --> </packageSource> </packageSourceMapping> <packageSourceCredentials> <mycompany> <add key="Username" value="vsts" /> <add key="ClearTextPassword" value="xxx" /> </mycompany> </packageSourceCredentials> <disabledPackageSources> <add key="Microsoft and .NET" value="true" /> </disabledPackageSources> <packageRestore> <add key="enabled" value="True" /> <add key="automatic" value="True" /> </packageRestore> <bindingRedirects> <add key="skip" value="False" /> </bindingRedirects> <packageManagement> <add key="format" value="0" /> <add key="disabled" value="False" /> </packageManagement> </configuration> - 配置后,NuGet只会从
nuget.org获取微软官方包,从私有源获取你们公司的内部包,彻底避免不必要的权限验证错误。
3. NU1603 警告
你的警告内容被截断了,但几乎可以肯定是和前面的依赖版本冲突相关的。解决完上面两个问题后,执行dotnet restore,这个警告大概率会自动消失。如果仍存在,补充完整警告信息后可以进一步排查,但通常版本冲突解决后这类警告都会随之消失。
最后验证步骤:
- 保存修改后的
csproj和NuGet.config文件 - 清理项目缓存:执行
dotnet clean,然后删除项目目录下的obj和bin文件夹 - 重新执行
dotnet restore,检查是否还有错误和警告
内容的提问来源于stack exchange,提问作者Dave New
相关产品推荐
相关产品推荐

