无法安装 NuGet pck - Microsoft.Web.基础结构不在我的 GAC 中



错误:无法添加引用。包"SimpleInjector.Integration.WebApi.WebHost.QuickStart"试图添加对"Microsoft.Web.Infrastructure"的框架引用,这在GAC中找不到。这可能是软件包中的错误。请联系软件包所有者寻求帮助。 找不到程序集"Microsoft.Web.Infrastructure"。

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

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

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

什么密钥文件?创建一个新名称并随机想出一个名称?跆拳道?这与特定程序集有何关系?

我遇到了类似的错误"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"的命令在这里也不起作用。

我一一删除了依赖项以修复它。

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

该问题已报告为简单注入器存储库上的错误: https://github.com/simpleinjector/SimpleInjector/issues/509

包所有者解决方案:

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

同时,可以手动将 Microsoft.Web.基础结构 NuGet 包添加到 Web API 项目中,也可以不将 SimpleInjector.Integration.WebApi.WebHost.QuickStart NuGet 包添加到项目中,而只需将 SimpleInjector.Integration.WebApi NuGet 包添加到项目中,然后手动添加所需的代码。WebHost.QuickStart 包实际上只不过是对集成包的引用,同时将一些代码注入到您的应用程序中。

文档中的 Web API 集成页介绍了如何使用简单注入器设置 Web API 项目。

最新更新