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

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


当前回答

对我来说,我使用的是微软visual studio 2019和Windows server 2019。

这个网络。配置编译部分

<compilation debug="true" targetFramework="4.7.2">

在开发和编码过程中突然出现了这个错误

我尝试添加程序集和引用它没有解决这个问题 这个错误在关闭和打开visual studio和再次打开项目后解决。

其他回答

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

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

这为我解决了问题。

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

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

我也面临着这个问题,试图运行一个ASP .NET MVC项目后,我们的代码库的一个小更新,即使它编译没有错误:

编译器错误信息:CS0012:类型为“系统”。对象在未引用的程序集中定义。必须向程序集“System”添加引用。运行时,版本=4.0.0.0,文化=中立,PublicKeyToken=b03f5f7f11d50a3a'。

我们的项目从未遇到过这个问题,所以我对在找出根本原因之前更改配置文件持怀疑态度。从错误日志中,我能够找到这个详细的编译器输出,指出了真正发生的事情:

warning CS1685: The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll' c:\Users\Admin\Software Development\source-control\Binaries\Publish\WebApp\Views\Account\Index.cshtml(35,20): error CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\meseems.webapp\68e2ea0f\8c5ee951\assembly\dl3\52ad4dac\84698469_3bb3d401\System.Collections.Immutable.DLL: (Location of symbol related to previous error)

显然,我们项目中添加的一个新包引用了旧版本的. net框架,导致了“在多个程序集中定义”问题(CS1685),这导致了运行时的剃刀视图编译器错误。

我删除了不兼容的包(System.Collections.Immutable.dll),问题不再发生。但是,如果在您的项目中无法删除该包,则需要尝试巴霍巴利的答案。

对我来说,我使用的是微软visual studio 2019和Windows server 2019。

这个网络。配置编译部分

<compilation debug="true" targetFramework="4.7.2">

在开发和编码过程中突然出现了这个错误

我尝试添加程序集和引用它没有解决这个问题 这个错误在关闭和打开visual studio和再次打开项目后解决。

这是一个老问题,但我今天为了修复我们持续集成服务器上的构建管道而面对它。添加

<Reference Include="System.Runtime" />

到我的.csproj文件解决了我的问题。

稍微介绍一下上下文:这个感兴趣的项目是一个完整的。net Framework 4.6.1项目,在开发机器上没有构建问题。 问题只出现在构建服务器上,这是我们无法控制的,可能是由于不同的SDK版本或类似的东西。

在Visual Studio中添加建议的<Reference解决了构建错误,代价是缺少引用警告(在引用树中添加的条目上的黄色三角形)。