无法安装NuGet包;DNXCore依赖混淆

12

我试图将 Naos.Packaging.Nuget NuGet 包添加到 VS2015 项目 Naos.Deployment.Core 中。两者都是开源的。

我收到了以下错误:

Failed to add reference to 'System.Globalization'. Please make sure that it is in the Global Assembly Cache.

完整的输出如下所示。

令人困惑的是 Naos.Deployment.Core 是 .net 4.5 项目,而 Naos.Packaging.Nuget 也是如此。Naos.Packaging.Nuget 依赖于 NuGet.Frameworks,NuGet.Frameworks 又依赖于 System.Globalization(据我所知,这是链中唯一依赖 System.Globalization 的内容)。然而,该依赖仅适用于 DNXCore 5.0 项目。

那么为什么 DNXCore 是一个问题?为什么我不能添加这个 NuGet 包,以及我该如何解决它?

尝试了此方法,但没有成功。使用最新的 VS 2015(更新 1),以及最新的 nuget。

Attempting to gather dependencies information for package 'Naos.Packaging.NuGet.1.0.5' with respect to project 'Naos.Deployment.Core', targeting '.NETFramework,Version=v4.5'
Attempting to resolve dependencies for package 'Naos.Packaging.NuGet.1.0.5' with DependencyBehavior 'Lowest'
Resolving actions to install package 'Naos.Packaging.NuGet.1.0.5'
Resolved actions to install package 'Naos.Packaging.NuGet.1.0.5'
Removed package 'NuGet.Core.2.8.6' from 'packages.config'
Successfully uninstalled 'NuGet.Core.2.8.6' from Naos.Deployment.Core
Adding package 'Naos.Packaging.Domain.1.0.5' to folder 'C:\Users\suraj\Documents\GitHub\Naos.Deployment\packages'
Added package 'Naos.Packaging.Domain.1.0.5' to folder 'C:\Users\suraj\Documents\GitHub\Naos.Deployment\packages'
Added package 'Naos.Packaging.Domain.1.0.5' to 'packages.config'
Successfully installed 'Naos.Packaging.Domain 1.0.5' to Naos.Deployment.Core
Adding package 'NuGet.Configuration.3.3.0' to folder 'C:\Users\suraj\Documents\GitHub\Naos.Deployment\packages'
Added package 'NuGet.Configuration.3.3.0' to folder 'C:\Users\suraj\Documents\GitHub\Naos.Deployment\packages'
Install failed. Rolling back...
Package 'NuGet.Configuration.3.3.0 : ' does not exist in project 'Naos.Deployment.Core'
Removed package 'Naos.Packaging.Domain.1.0.5 : ' from 'packages.config'
Package 'NuGet.Core.2.8.6' already exists in folder 'C:\Users\suraj\Documents\GitHub\Naos.Deployment\packages'
Added package 'NuGet.Core.2.8.6' to 'packages.config'
Removing package 'NuGet.Configuration.3.3.0 : ' from folder 'C:\Users\suraj\Documents\GitHub\Naos.Deployment\packages'
Removed package 'NuGet.Configuration.3.3.0 : ' from folder 'C:\Users\suraj\Documents\GitHub\Naos.Deployment\packages'
Removing package 'Naos.Packaging.Domain.1.0.5 : ' from folder 'C:\Users\suraj\Documents\GitHub\Naos.Deployment\packages'
Removed package 'Naos.Packaging.Domain.1.0.5 : ' from folder 'C:\Users\suraj\Documents\GitHub\Naos.Deployment\packages'
Failed to add reference to 'System.Globalization'. Please make sure that it is in the Global Assembly Cache.
========== Finished ==========

这是一个dnx项目还是传统的C#项目?你是使用nuget还是dnu来进行恢复? - Victor Hurdugaci
这两个项目都是经典的C#项目,使用NuGet进行开发。 - Suraj
你的项目是否针对 .net4.5(非客户端配置文件)?如果引用了 System.Globalization,你是否尝试先将其移除?NuGet 是否是最新版本?看起来问题与 NuGet.Configuration.3.3.0 有关,你是否尝试使用 NuGet 安装该版本? - Stefan
这是一个标准的.NET 4.5版本 - 我无法添加System.Globalization,如果我手动更新csproj中的引用,则会显示为丢失。然而,在同一台机器上,使用相同的Visual Studio版本和框架,它不会显示为缺失的引用,并且在安装NuGet包时已正确添加。 - wlscaudill
@MsYvette会的!我在Twitter上ping了NuGet团队,但还没有收到回复。 - Suraj
2个回答

6

Naos.Packaging.NuGet 1.0.7依赖于NuGet.Frameworks 3.3.0。

NuGet.Frameworks 3.3.0依赖于System.Globalization 4.0.10。这就是为什么它正在寻找System.Globalization的原因。

尝试了所有方法,包括将System.Globalisation dll添加为引用。没有使用控制台,我使用了VS仪表板。

enter image description here

enter image description here

我决定忽略依赖关系,并使用覆盖冲突的选项,以便自动优先选择Naos.Packaging.NuGet.1.0.7选项。

enter image description here

安装日志:
Resolved actions to install package 'Naos.Packaging.NuGet.1.0.7'
Resolved actions to install package 'Naos.Packaging.NuGet.1.0.7'
Adding package 'Naos.Packaging.NuGet.1.0.7' to folder 'D:\VSpROJECTS\Naos.Deployment-master\Naos.Deployment-master\packages'
Added package 'Naos.Packaging.NuGet.1.0.7' to folder 'D:\VSpROJECTS\Naos.Deployment-master\Naos.Deployment-master\packages'
Added package 'Naos.Packaging.NuGet.1.0.7' to 'packages.config'
Successfully installed 'Naos.Packaging.NuGet 1.0.7' to Naos.Deployment.Core.Test
Package 'Naos.Packaging.NuGet.1.0.7' already exists in folder 'D:\VSpROJECTS\Naos.Deployment-master\Naos.Deployment-master\packages'
Added package 'Naos.Packaging.NuGet.1.0.7' to 'packages.config'
Successfully installed 'Naos.Packaging.NuGet 1.0.7' to Naos.Deployment.Core
========== Finished ==========

Nuget已安装,重新构建时没有错误。

enter image description here

其他所有依赖关系都可以手动添加,其中在日志中有一个列表,或者在VS中进行轻松检查。
经过更多测试,我决定这是最佳选择。由于某种原因,它无法看到System.globalization,即使我引用它,甚至会在输出窗口中显示重复引用,但安装nuget时却无法看到该引用。有太多的依赖项来找出问题的根本原因。

另一点:nuget只有147次下载,因此可能值得向作者报告错误。

文档中获悉:

2 依赖行为 - 这允许您配置NuGet将决定安装哪些版本的相关软件包的方式。有五个选项:

a. 忽略 - 这通常是一个坏主意,因为一个软件包已经规定它依赖于其他软件包,并需要它们的内容才能运行。您可以选择跳过安装这些软件包。

.../...

3 文件冲突选项 - 如果要安装的包或其任何依赖包与磁盘上已有的文件匹配,NuGet应该如何处理?

.../...

c. 全部覆盖 - NuGet将使用包中的文件覆盖项目中的任何匹配文件

Spritely Recipees

在InheritedTypeJasonConverter中使用System.Globalization

namespace Spritely.Recipes
{
    using System;
    using System.Collections.Concurrent;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Globalization;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;

这也使用了System.Collections,当尝试独立添加Naos.Packaging.NuGet依赖项时,它也会出现错误。
如果我尝试分别引用它们,则会显示冲突,因为有两个引用。
包管理器还使用了System.Globalization:
namespace Naos.Deployment.Core
{
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.IO;
    using System.IO.Compression;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Xml;

Naos.Packaging.NuGet.1.0.7 可以无问题地安装到以下项目中:
Successfully installed 'Naos.Packaging.NuGet 1.0.7' to Naos.Deployment.Contract
Successfully installed 'Naos.Packaging.NuGet 1.0.7' to Naos.Deployment.MessageBus.Handler
Successfully installed 'NuGet.PackageManagement 3.3.0' to Naos.Deployment.MessageBus.Contract
Successfully installed 'Naos.Packaging.NuGet 1.0.7' to Naos.Deployment.CloudManagement
Successfully installed 'Naos.Packaging.NuGet 1.0.7' to Naos.Deployment.Console

我已经直接联系Naos关于这个问题,并正在等待他们的答复。


以下是一些先前的故障排除,以展示使用ignore dependencies所需的绝望程度。

这是在一个全新的Visual Studio项目上完成的。我误解了作者最初的意图。

当它显示它正在removing包时,它正在删除已经安装但需要更新以与您正在使用的Naos包兼容的包。它无法执行此操作。这可能是由于一个依赖于被删除包的包。在这种情况下是'NuGet.Core.2.8.6'。或者这可能是文件中的一些轻微损坏。因此,在尝试安装Naos之前,您必须卸载该软件包,并使用Naos所需的软件包版本进行更新,或者将其留给Naos来添加所需的依赖项。

这个问题是,如果您有依赖于'NuGet.Core.2.8.6'的软件包,您可能也需要卸载这些软件包。然后安装Naos,然后重新安装具有依赖于'NuGet.Core.2.8.6'的其他软件包。

在尝试安装Naos.Packaging.NuGet 1.0.7之前,请先删除NuGet.Core.2.8.6。

成功从'packages.config'中移除了'NuGet.Core.2.8.6'软件包

已经从Naos.Deployment.Core成功卸载了'NuGet.Core.2.8.6'

这可能意味着需要进行一系列的卸载和重新安装,但这将使nuget能够正确安装依赖项。

然后进入目录并删除对它的任何引用。

这是我安装过时版本的情况:

PM> Install-Package Naos.Packaging.NuGet -Version 1.0.7
Attempting to gather dependencies information for package 'Naos.Packaging.NuGet.1.0.7' with respect to project 'WebApplication2', targeting '.NETFramework,Version=v4.5.2'
Attempting to resolve dependencies for package 'Naos.Packaging.NuGet.1.0.7' with DependencyBehavior 'Lowest'
Resolving actions to install package 'Naos.Packaging.NuGet.1.0.7'
Resolved actions to install package 'Naos.Packaging.NuGet.1.0.7'
Removed package 'NuGet.Core.2.8.6' from 'packages.config'
Successfully uninstalled 'NuGet.Core.2.8.6' from WebApplication2
Adding package 'Naos.Packaging.Domain.1.0.7' to folder 'D:\Projects\WebApplication2\packages'
Added package 'Naos.Packaging.Domain.1.0.7' to folder 'D:\Projects\WebApplication2\packages'
Added package 'Naos.Packaging.Domain.1.0.7' to 'packages.config'
Successfully installed 'Naos.Packaging.Domain 1.0.7' to WebApplication2
Adding package 'NuGet.Configuration.3.3.0' to folder 'D:\Projects\WebApplication2\packages'
Added package 'NuGet.Configuration.3.3.0' to folder 'D:\Projects\WebApplication2\packages'
Added package 'NuGet.Configuration.3.3.0' to 'packages.config'
.../...
Added package 'Naos.Packaging.NuGet.1.0.7' to 'packages.config'
Successfully installed 'Naos.Packaging.NuGet 1.0.7' to WebApplication2
Removing package 'NuGet.Core.2.8.6' from folder 'D:\Projects\WebApplication2\packages'
Removed package 'NuGet.Core.2.8.6' from folder 'D:\Projects\WebApplication2\packages'

这是我的成功案例,没有需要移除任何软件包:
Attempting to gather dependencies information for package 'Naos.Packaging.NuGet.1.0.7' with respect to project 'WebApplication1', targeting '.NETFramework,Version=v4.5.2'
Attempting to resolve dependencies for package 'Naos.Packaging.NuGet.1.0.7' with DependencyBehavior 'Lowest'
Resolving actions to install package 'Naos.Packaging.NuGet.1.0.7'
Resolved actions to install package 'Naos.Packaging.NuGet.1.0.7'
Adding package 'Microsoft.Web.Xdt.2.1.1' to folder 'D:\Projects\WebApplication1\packages'
Added package 'Microsoft.Web.Xdt.2.1.1' to folder 'D:\Projects\WebApplication1\packages'
Added package 'Microsoft.Web.Xdt.2.1.1' to 'packages.config'
Successfully installed 'Microsoft.Web.Xdt 2.1.1' to WebApplication1
Adding package 'Naos.Packaging.Domain.1.0.7' to folder 'D:\Projects\WebApplication1\packages'
Added package 'Naos.Packaging.Domain.1.0.7' to folder 'D:\Projects\WebApplication1\packages'
Added package 'Naos.Packaging.Domain.1.0.7' to 'packages.config'
Successfully installed 'Naos.Packaging.Domain 1.0.7' to WebApplication1
Adding package 'NuGet.Configuration.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Configuration.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Configuration.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Configuration 3.3.0' to WebApplication1
Adding package 'NuGet.ContentModel.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.ContentModel.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.ContentModel.3.3.0' to 'packages.config'
Successfully installed 'NuGet.ContentModel 3.3.0' to WebApplication1
Adding package 'NuGet.Core.2.10.1' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Core.2.10.1' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Core.2.10.1' to 'packages.config'
Successfully installed 'NuGet.Core 2.10.1' to WebApplication1
Adding package 'NuGet.Logging.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Logging.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Logging.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Logging 3.3.0' to WebApplication1
Adding package 'NuGet.Versioning.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Versioning.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Versioning.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Versioning 3.3.0' to WebApplication1
Adding package 'NuGet.Frameworks.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Frameworks.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Frameworks.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Frameworks 3.3.0' to WebApplication1
Adding package 'NuGet.LibraryModel.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.LibraryModel.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.LibraryModel.3.3.0' to 'packages.config'
Successfully installed 'NuGet.LibraryModel 3.3.0' to WebApplication1
Adding package 'NuGet.Packaging.Core.Types.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Packaging.Core.Types.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Packaging.Core.Types.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Packaging.Core.Types 3.3.0' to WebApplication1
Adding package 'NuGet.Packaging.Core.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Packaging.Core.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Packaging.Core.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Packaging.Core 3.3.0' to WebApplication1
Adding package 'NuGet.Packaging.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Packaging.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Packaging.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Packaging 3.3.0' to WebApplication1
Adding package 'NuGet.Protocol.Core.Types.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Protocol.Core.Types.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Protocol.Core.Types.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Protocol.Core.Types 3.3.0' to WebApplication1
Adding package 'NuGet.Protocol.Core.v2.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Protocol.Core.v2.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Protocol.Core.v2.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Protocol.Core.v2 3.3.0' to WebApplication1
Adding package 'NuGet.Protocol.Core.v3.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Protocol.Core.v3.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Protocol.Core.v3.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Protocol.Core.v3 3.3.0' to WebApplication1
Adding package 'NuGet.Repositories.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Repositories.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Repositories.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Repositories 3.3.0' to WebApplication1
Adding package 'NuGet.Resolver.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Resolver.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Resolver.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Resolver 3.3.0' to WebApplication1
Adding package 'NuGet.RuntimeModel.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.RuntimeModel.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.RuntimeModel.3.3.0' to 'packages.config'
Successfully installed 'NuGet.RuntimeModel 3.3.0' to WebApplication1
Adding package 'NuGet.Client.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Client.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Client.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Client 3.3.0' to WebApplication1
Adding package 'NuGet.DependencyResolver.Core.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.DependencyResolver.Core.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.DependencyResolver.Core.3.3.0' to 'packages.config'
Successfully installed 'NuGet.DependencyResolver.Core 3.3.0' to WebApplication1
Adding package 'NuGet.DependencyResolver.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.DependencyResolver.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.DependencyResolver.3.3.0' to 'packages.config'
Successfully installed 'NuGet.DependencyResolver 3.3.0' to WebApplication1
Adding package 'NuGet.ProjectModel.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.ProjectModel.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.ProjectModel.3.3.0' to 'packages.config'
Successfully installed 'NuGet.ProjectModel 3.3.0' to WebApplication1
Adding package 'NuGet.Commands.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Commands.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.Commands.3.3.0' to 'packages.config'
Successfully installed 'NuGet.Commands 3.3.0' to WebApplication1
Adding package 'NuGet.ProjectManagement.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.ProjectManagement.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.ProjectManagement.3.3.0' to 'packages.config'
Successfully installed 'NuGet.ProjectManagement 3.3.0' to WebApplication1
Adding package 'NuGet.PackageManagement.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.PackageManagement.3.3.0' to folder 'D:\Projects\WebApplication1\packages'
Added package 'NuGet.PackageManagement.3.3.0' to 'packages.config'
Successfully installed 'NuGet.PackageManagement 3.3.0' to WebApplication1
Adding package 'Naos.Packaging.NuGet.1.0.7' to folder 'D:\Projects\WebApplication1\packages'
Added package 'Naos.Packaging.NuGet.1.0.7' to folder 'D:\Projects\WebApplication1\packages'
Added package 'Naos.Packaging.NuGet.1.0.7' to 'packages.config'
Successfully installed 'Naos.Packaging.NuGet 1.0.7' to WebApplication1

因此,请卸载使用较低版本的任何依赖项。

如果这无法解决问题,请告诉我。


0

从头开始重新创建Naos.Deployment.Core似乎解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接