我在netcoreapp2.0控制台应用程序中遇到以下NU1605依赖项错误:

NU1605  Detected package downgrade: System.Diagnostics.Debug from 4.3.0 to 4.0.11. Reference the package directly from the project to select a different version. 
 MyProject -> Colorful.Console 1.2.6 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Diagnostics.Debug (>= 4.3.0) 
 MyProject -> System.Diagnostics.Debug (>= 4.0.11)

NU1605  Detected package downgrade: System.Runtime.Extensions from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version. 
 MyProject -> Colorful.Console 1.2.6 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Runtime.Extensions (>= 4.3.0) 
 MyProject -> Colorful.Console 1.2.6 -> System.Runtime.Extensions (>= 4.1.0)    MyProject

NU1605  Detected package downgrade: System.Runtime.Handles from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version. 
 MyProject -> Colorful.Console 1.2.6 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Runtime.Handles (>= 4.3.0) 
 MyProject -> Colorful.Console 1.2.6 -> System.IO.FileSystem 4.0.1 -> System.Runtime.Handles (>= 4.0.1)

NU1605  Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version. 
 MyProject -> Colorful.Console 1.2.6 -> System.Console 4.0.0 -> runtime.win.System.Console 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0) 
 MyProject -> Colorful.Console 1.2.6 -> System.Runtime.InteropServices (>= 4.1.0)

我曾try 在csproj中引用这些包版本,但这并不能解决问题.见csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Colorful.Console" Version="1.2.6" />
    <PackageReference Include="CommandLineParser" Version="2.2.1" />
    <PackageReference Include="DotSpinners" Version="1.2.0" />
    <PackageReference Include="System.Diagnostics.Debug" Version="4.0.11" />
    <PackageReference Include="System.Runtime.Extensions" Version="4.1.0" />
    <PackageReference Include="System.Runtime.Handles" Version="4.0.1" />
    <PackageReference Include="System.Runtime.InteropServices" Version="4.1.0" />
  </ItemGroup>
</Project>

它们似乎恢复得很好:

Package References

该项目还引用了Microsoft.NETCore.App 2.0 SDK.

从CLI执行dotnet还原时,我还发现以下错误,我不确定是否与此相关:

C:\Program Files\dotnet\sdk\2.1.200\NuGet.targets(114,5): error : Failed to retrieve information about 'System.Runtime.Serialization.Formatters' from remote source 'https://mycompany.pkgs.visualstudio.com/_packaging/myid/nuget/v3/flat2/system.runtime.serialization.formatters/index.json'. [C:\MyProject\MyProject.sln]
C:\Program Files\dotnet\sdk\2.1.200\NuGet.targets(114,5): error : Response status code does not indicate success: 401 (Unauthorized). [C:\MyProject\MyProject.sln]

我不知道为什么它要试图从我们的私有公司包库中检索有关"System.Runtime.Serialization.Formaters"的信息.

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>
  <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>

如果这意味着什么,我还有以下NU1603警告:

NU1603  MyProject depends on System.Runtime.Handles (>= 4.1.0) but System.Runtime.Handles 4.1.0 was not found. An approximate best match of System.Runtime.Handles 4.3.0 was resolved.

推荐答案

我使用.netcoreapp2.2控制台应用程序时遇到了类似的问题.

这项工程正在顺利进行.然而,发布失败,出现了几个NU1605错误.

问题源于log4net版本2.0.8.它被引用在一篇文章中.网络标准2.具有以下依赖项的0项目:

log4net v2.0.8 does not include specific dependency for .NetStandard,Version=2.0

它们导致引用log4net的项目中的包降级.在发布期间,这些警告被视为错误...

为了解决这个问题,我通过Nuget添加了这些库的正确版本.

log4net dependencies and additional nuget packages for version errors

最后,出版成功了.

P.S.当我第一次添加带有最新版本库的包时,依赖项列表上显示了一个黄色警告标志,好像这些包不适合该项目.卸载项目并重新加载后,警告标志消失了!(我正在使用Visual Studio 2019)

.net相关问答推荐

ZstdNet库的问题:Src大小不正确,异常

为什么.Net 8.0.100是预览版?

为什么我在环境变量中有不同的值?

什么是表达式树,如何使用它们,为什么要使用它们?

SqlDateTime.MinValue != DateTime.MinValue,为什么?

为 XML 编码文本数据的最佳方法

一种消耗(所有字节)BinaryReader 的优雅方式?

为什么 .NET 中没有可序列化 XML 的字典?

NuGetPackageImportStamp 有什么用?

资源(.resx)文件有什么好处?

将记录器作为单身人士是一个好习惯吗?

获取系统中已安装的应用程序

无锁多线程适用于真正的线程专家

如何从 WCF REST 方法返回自定义 HTTP 状态代码?

将 SignalR 2.0 .NET 客户端重新连接到服务器集线器的最佳实践

如果锁定的对象内部发生异常,它会保持锁定状态吗?

如何从 HashSet 中检索实际项目?

C# ListView 列宽自动

当它被抛出和捕获时,不要在那个异常处停止调试器

如何为我的 C# 应用程序创建产品密钥?