我正在准备一个全新的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>

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


当前回答

删除Nuget包管理器上的引用并重新添加它为我解决了这个问题。

其他回答

我需要下载并安装Windows 8.0(不是8.1)SDK来消除TeamCity服务器上的错误。

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

要实现修复,首先要扩展现有的web。配置编译部分,默认情况下看起来像这样:

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

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

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

最终的网。配置标签应该是这样的:

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

我将“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.1\Facades\system.runtime.dll”文件复制到生产服务器的bin文件夹中,这样就解决了问题。

对我有帮助的只有这一行代码:

Assembly.Load("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");

我添加了System.Runtime.dll到bin项目,它工作了:)