生成错误:您必须添加对System.Runtime的引用

我正在准备一个全新的ASP.NET MVC 5.1解决方案。 我正在添加一堆NuGet包并与Zurb Foundation等进行设置。

作为其中的一部分,我添加了对内部NuGet包的引用,这是一个可移植类库,我认为这会在构建服务器上造成问题。

TeamCity使构建失败:

“System.Object”类型在未引用的程序集中定义。 您必须添加对程序集’System.Runtime,Version = 4.0.0.0的引用

我最初在编译Razor网页时添加了针对相同或类似错误的修复,修复了在web.config

      

但问题尚未解决。

要实现此修复,请首先展开现有的web.config编译部分,默认情况下如下所示:

  

扩展后,我按照指示添加了以下新配置XML:

     

最终的web.config标记应如下所示:

      

添加对此System.Runtime.dll程序集的引用修复了此问题:

 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Runtime.dll 

虽然构建服务器上不存在该显式路径中的该文件。

一旦我在PCL和这些Facades上找到了一些文档,我会回复更多信息。

更新

在整个互联网上的外观assembly上几乎没有任何东西。

谷歌:

 (Facades OR Facade) Portable Library site:microsoft.com 

@ PeterMajeed在接受的答案中的评论帮助我解决了相关问题。 我没有使用可移植库,但在新的Windows Server 2012安装上遇到了相同的构建错误,我正在运行TeamCity。 安装Microsoft .NET Framework 4.5.1 Developer Pack解决了这个问题(在单独安装MS Build Tools之后 )。

我在VS 2015(虽然不是MVC)的某些解决方案中遇到了这个问题,甚至在一个工作站上的相同解决方案中也没有在另一个工作站上。 将.NET版本更改为4.6并引用PCL后,出现错误。

解决方案很简单: 关闭解决方案并删除与解决方案相同的文件隐藏的.vs文件夹。

如其他答案中所建议的那样添加缺少的引用也可以解决问题,但即使再次删除引用,错误仍然会解决。

至于TeamCity,我不能说因为我的配置从来没有出现过问题。 但请确保您将工作目录重置为调试工作的一部分。

唯一对我有用的方法。 将程序集添加到web.config

      

安装.NET Runtime以及您要定位的.NET版本的目标包。

开发人员包就是捆绑在一起的这两件事,但截至今天似乎没有4.6版本,所以你必须分别安装这两个项目。

可以在此处找到下载: http : //blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#

我需要下载并安装Windows 8.0(而不是8.1)SDK,以使错误在我的TeamCity服务器上消失。

https://developer.microsoft.com/en-us/windows/downloads/windows-8-sdk

我在一个带有Web API项目和几个库项目的解决方案中遇到了这个问题。 其中一个库项目是在构建时borking,错误表示Unity属性不是“有效”属性,然后一个错误说我需要引用System.Runtime。

经过多次搜索,重新安装4.5.2开发包,并没有任何工作,我想也许这只是一个版本不匹配。 所以我查看了每个项目的属性,其中一个基础库以4.5为目标,而其他每个库都以4.5.2为目标。 我将那个更改为目标4.5.2并且错误消失了。

在我们的Tfs 2013构建服务器上,我在测试项目中遇到了同样的错误。 主网站项目在.Net 4.5.1上运行。

我安装了一个系统运行时的nuGet包,并添加了packages \ System.Runtime.4.3.0 \ ref \ net462 \ System.Runtime.dll中的引用

这解决了我。

通过Nuget Package Manager删除引用并重新添加它解决了我的问题。