你必须添加一个引用到System.Runtime

我正在准备一个全新的ASP.NET MVC 5.1解决scheme。 我添加了一些NuGet包,并与Zurb基金会合作

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

TeamCity的构build失败:

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

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

 <compilation ... > <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </assemblies> </compilation> 

但是这个问题没有解决。

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

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

尽pipe构build服务器上不存在显式path中的文件。

一旦我find一些关于PCL和这些外墙的文档,我会回复更多的信息。

更新

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

谷歌:

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

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

 <compilation debug="true" targetFramework="4.5"/> 

一旦展开,我按照指示添加下列新的configurationXML:

  <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </assemblies> 

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

 <compilation debug="true" targetFramework="4.5"> <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </assemblies> </compilation> 

@ PeterMajeed在接受的答案中的评论帮助我解决了一个相关的问题。 我没有使用可移植的库,但是在运行TeamCity的全新Windows Server 2012安装上有相同的生成错误。 安装Microsoft .NET Framework 4.5.1开发包已经解决了这个问题(在单独安装MS Build Tools之后 )。

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

解决scheme很简单: closures解决scheme并删除与解决scheme相同的文件中的隐藏的.vs文件夹。

添加其他答案中build议的缺less的引用也解决了这个问题,但即使再次删除引用,错误仍然得到解决。

至于TeamCity,我不能说因为我的configuration从来没有问题。 但要确保将工作目录重置为debugging工作的一部分。

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

开发人员包是这两个东西捆绑在一起,但截至今天似乎没有一个4.6版本,所以你将不得不安装两个项目分开。

可以在这里find下载: 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项目和一些库项目的解决scheme中遇到了这个问题。 其中一个图书馆项目正在build设,有错误表示Unity属性不是“有效”的属性,然后有一个错误说我需要引用System.Runtime。

经过大量search,重新安装4.5.2开发包,没有任何工作,我想这可能只是一个版本不匹配。 所以我看了每个项目的属性,其中一个基本库的目标是4.5,而另一个目标是4.5.2。 我改变了那个也瞄准了4.5.2并且错误消失了。

在我们的Tfs 2013构build服务器上,我在testing项目中遇到了同样的错误。 主要的web项目运行在.Net 4.5.1上。

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

这为我解决了。

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