【问题标题】:Unable to install NuGet pck - Microsoft.Web.Infrastructure is not in my GAC无法安装 NuGet pck - Microsoft.Web.Infrastructure 不在我的 GAC 中
【发布时间】:2018-07-12 19:47:46
【问题描述】:

错误: 未能添加参考。 'SimpleInjector.Integration.WebApi.WebHost.QuickStart' 包尝试添加对 GAC 中未找到的'Microsoft.Web.Infrastructure' 的框架引用。这可能是包中的错误。请联系包所有者寻求帮助。 找不到程序集“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 这完全没有意义。它说: "在选择强名称密钥文件框中,选择 ,然后导航到密钥文件。要创建新的密钥文件,请在创建强名称密钥对话框中选择并输入其名称。"

什么密钥文件?创建一个新的,只是想出一个随机的名字?什么?这与特定的程序集有什么关系?

【问题讨论】:

  • 我检查了 SimpleInjector.Integration.WebApi.Webhost.Quickstart 的 nuspec 文件,它添加了对 Microsoft.Web.Infrastructre 的引用作为 FrameworkAssembly <frameworkAssemblies> <frameworkAssembly assemblyName="Microsoft.Web.Infrastructure" targetFramework=".NETFramework4.0" /> </frameworkAssemblies>
  • 但据我所知,Microsoft.Web.Infrastructure 是一个 nuget 包,不是 .net 框架的一部分。
  • @Schadensbegrenzer 啊哈,我明白了。也许在某个时候,基础设施程序集已从 .net 框架中删除。我会尝试联系包所有者。
  • @Kasper Skov ,据我所知,它没有安装在.NET Framework中,其他成员之前也报告过这个问题:github.com/fsprojects/Paket/issues/1393或forums.asp.net/t/…。当然,如果您从包所有者那里得到任何最新信息,请随时分享最新信息。

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


【解决方案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”的命令在这里也不起作用。

我一一删除了依赖来修复它。

【讨论】:

    【解决方案2】:

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

    该问题已报告为 SimpleInjectors 存储库中的一个错误: https://github.com/simpleinjector/SimpleInjector/issues/509

    包所有者解决方案:

    “我会将这个问题添加到 v4.1 的待办事项中,并将使用 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 项目。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 2014-02-15
      相关资源
      最近更新 更多