安装包:无法添加对System.Runtime'的引用

时间:2015-07-20 14:38:02

标签: c# .net gac

我尝试使用命令

在我的项目中安装Autofac nuget软件包
Install-Package -Prerelease Autofac

但失败并显示错误

Install-Package : Failed to add reference to 'System.Runtime'. Please make sure that it is in the Global Assembly Cache.

我已经尝试重新安装.NET Framework 4.5.2(这是我的项目所针对的版本),但得到了消息"已经安装了.NET Framework 4.5.2"。但是,搜索C:\Windows\assembly\ System.Runtime.dll找不到任何完全匹配(虽然有一些System.Runtime.ni.dll的实例,但(似乎表明)它们实际上是相同的程序集...)。

我该怎么办?

project config

更新:显然我对GAC的位置感到困惑。 Amy启发了我,并在C:\Windows\Microsoft.NET\assembly中搜索,而不是找到System.Runtime.dll。为什么不是Visual Studio?

2 个答案:

答案 0 :(得分:26)

我遇到了同样的问题。

在此处找到解决方案:https://github.com/aspnet/WebHooks/issues/18

为了解决这个问题,我将<Reference Include="System.Runtime"/>添加到.csproj中 该项目的文件,重建它,它工作。

答案 1 :(得分:18)

  

请确保它在全局程序集缓存中。

这是过度无用的错误消息。它不仅没有描述真正的问题,而且还会让您在找到解决方法时误入歧途。 .NET Framework程序集的程序集引用必须从不来自GAC。失败模式的类型可能非常nasty to diagnose。引用程序集必须来自C:\ Program Files(x86)\ Reference Assemblies目录。

查看您尝试安装的Autofac nuget软件包的.nuspec文件,它支持两个不同的目标。一个是DNXCore版本4.0.10-beta-22816。希望您没有使用它,该项目正在迅速变化。

另一个是.NET Portable,配置文件259.这允许您的项目以.NET 4.5.x,Store,Phone80和Phone81为目标。直言不讳的错误消息告诉你的是它找不到该配置文件。使用Windows资源管理器查看,配置文件存储在C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETPortable \ v4.5 \ Profile \ Profile259目录中。它具有所需的System.Runtime.dll 引用程序集

嗯,当然,我无法猜测潜在的原因。

他们确实在.nuspec文件中犯了微妙的错误。考虑一个更稳定的Autofac版本,你可能不想成为beta测试者。并且没有针对4.5.2,没有任何意义。它没有添加任何有趣的东西,并且迫使用户更新他的.NET安装也不是很合理。