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

Tom*_*han 20 .net c# gac

我正在尝试使用该命令在我的项目中安装Autofac nuget包

Install-Package -Prerelease Autofac
Run Code Online (Sandbox Code Playgroud)

但它失败了,错误

Install-Package : Failed to add reference to 'System.Runtime'. Please make sure that it is in the Global Assembly Cache.
Run Code Online (Sandbox Code Playgroud)

我已经尝试重新安装.NET Framework 4.5.2(这是我的项目所针对的版本),但得到消息"已经安装了.NET Framework 4.5.2".然而,搜索C:\Windows\assembly\对于System.Runtime.dll没有找到任何精确的匹配(虽然也有少数情况下System.Runtime.ni.dll它(似乎表明,),它们实际上是同一个组件......).

我该怎么办?

项目配置

更新:显然我对GAC的位置感到困惑.艾米开悟了我,C:\Windows\Microsoft.NET\assembly而我找到了System.Runtime.dll.为什么不用Visual Studio?

Rob*_*lob 27

我有同样的问题.

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

为了修复它,我添加 了项目<Reference Include="System.Runtime"/>的.csproj
文件,重建它并且它工作.


Han*_*ant 18

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

这是一个非常无益的错误消息.它不仅没有描述真正的问题,而且还会让您在找到解决方法时误入歧途..NET Framework程序集的程序集引用绝不能来自GAC.这种故障模式在诊断时可能非常讨厌.引用程序集必须来自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安装是不太合理的.

  • 我和另一个用户使用不同的包_SerilogTimings_重复地解决了这个问题 - 通过手动添加引用,安装包,然后再次删除它来解决它.看起来像是基于project.json的软件包的工具问题. (3认同)
  • 根据我的理解,这是一个非常有用的写作 - 谢谢!但是,我在您指定的目录中有一个`System.Runtime.dll`.它可能有问题吗?我怎么知道?我设法通过从头开始重新创建项目文件并从备份中复制代码文件来摆脱我的直接问题. (2认同)