我正在准备一个全新的ASP。NET MVC 5.1解决方案。我添加了一堆NuGet包,并设置它与Zurb基金会等。

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

TeamCity在以下情况下构建失败:

系统类型。对象在未引用的程序集中定义。必须向程序集“System”添加引用。= 4.0.0.0运行时版本

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

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

然而,这个问题尚未解决。


当前回答

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

经过大量搜索,重新安装了4.5.2开发人员包,但没有任何工作,我想可能只是版本不匹配。所以我查看了每个项目的属性,其中一个基本库的目标是4.5,而其他的都是4.5.2。我把它也改成了目标4.5.2,错误就消失了。

其他回答

@PeterMajeed在接受答案中的评论帮助我解决了一个相关的问题。我没有使用可移植库,但在新安装的Windows Server 2012上也有同样的构建错误,我在那里运行TeamCity。

安装Microsoft . net Framework 4.5.1 Developer Pack解决了这个问题(在单独安装了MS Build Tools之后)。

安装. net运行时以及目标版本的目标包。

开发者包只是把这两样东西捆绑在一起,但到目前为止似乎还没有4.6版本,所以你必须分别安装这两样东西。

下载地址:http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#

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

解决方案很简单:关闭解决方案,并删除解决方案所在文件夹中的隐藏.vs文件夹。

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

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

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

经过大量搜索,重新安装了4.5.2开发人员包,但没有任何工作,我想可能只是版本不匹配。所以我查看了每个项目的属性,其中一个基本库的目标是4.5,而其他的都是4.5.2。我把它也改成了目标4.5.2,错误就消失了。

在我们的Tfs 2013构建服务器上,我在一个测试项目中有同样的错误。 主web项目运行在。net 4.5.1上。

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

这为我解决了问题。