我尝试使用命令
在我的项目中安装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
的实例,但(似乎表明)它们实际上是相同的程序集...)。
我该怎么办?
更新:显然我对GAC的位置感到困惑。 Amy启发了我,并在C:\Windows\Microsoft.NET\assembly
中搜索,而不是做找到System.Runtime.dll
。为什么不是Visual Studio?
答案 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安装也不是很合理。