无法安装NuGet pck - Microsoft.Web.Infrastructure不在我的GAC

时间:2018-02-02 10:17:24

标签: visual-studio visual-studio-2017 nuget .net-assembly gac

错误: 无法添加引用。包' SimpleInjector.Integration.WebApi.WebHost.QuickStart'试图添加一个框架引用到Microsoft.Web.Infrastructure'这在GAC中找不到。这可能是包中的错误。请联系包裹所有者寻求帮助。 找不到汇编' Microsoft.Web.Infrastructure'。

首先。为什么在我的项目中有dll并引用它时出错? 的二。我该如何解决这个问题?

显然,我已经尝试使用Mircosoft的各种指南将程序集添加到我的GAC中。他们都没有意义imo。

https://docs.microsoft.com/en-us/dotnet/framework/app-domains/how-to-install-an-assembly-into-the-gac 这导致"将组件添加到缓存失败:系统找不到指定的文件。"我想这是因为它不是带有密钥对的强类型名称,或者是什么。所以我调查了这个https://docs.microsoft.com/en-us/dotnet/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name 这完全没有意义。它说: "在“选择强名称密钥文件”框中,选择,然后导航到密钥文件。要创建新的密钥文件,请在“创建强名称密钥”对话框中选择并输入其名称。"

什么是关键文件?创建一个新的,只是想出一个随机的名字?跆拳道?这与具体的装配有什么关系?

2 个答案:

答案 0 :(得分:1)

我也遇到类似的问题,错误为“ Unable to uninstall 'Ninject.3.2.2' because 'Ninject.Extensions.ChildKernel.3.2.0, Ninject.Extensions.Conventions.3.2.0, Ninject.Web.3.2.0, Ninject.Web.Common.3.2.0' depend on it.”。 这是由解决方案中的多个项目引起的,这些项目依赖于这些DLL,因此程序包管理器无法将其卸载。

带有“卸载软件包名称-RemoveDependency”的命令在这里也无法使用。

我逐个删除了依赖项以进行修复。

答案 1 :(得分:0)

正如@Schadensbegrenzer和@ LeoLiu-MSFT指出的那样,Infrastrcuture程序集不再是.NET框架的一部分了。

该问题已被报告为SimpleInjectors repo上的错误: https://github.com/simpleinjector/SimpleInjector/issues/509

包所有者解决方案:

"我将此问题添加到v4.1 backlog中,并将使用v4.1修复NuGet包(以及SimpleInjector.Integation.MVC3的包)。

与此同时,您可以手动将Microsoft.Web.Infrastructure NuGet包添加到Web API项目中,或者不要将SimpleInjector.Integration.WebApi.WebHost.QuickStart NuGet包添加到您的项目中,但只是SimpleInjector.Integration.WebApi NuGet包并手动添加所需的代码。 WebHost.QuickStart包实际上只是对集成包的引用,同时将一些代码注入到您的应用程序中。

文档中的Web API集成页面描述了如何使用Simple Injector设置Web API项目。"