与.NET 4.5安装成功构建服务器可以部署安装项目目标4.0只与.NET 4.0的服务器?(Can

2019-07-19 18:43发布

我们最近安装了.NET 4.5到我们的持续集成构建服务器,以便它可以支持使用的.NET 4.5功能的新项目。 此版本的服务器也可以用来构建和部署旧项目,以及,其中一些针对.NET 4.0。

面向.NET 4.0正在建造这台服务器上的项目,然后部署到只有.NET 4.0安装正与下面的错误而失败目标服务器:

Method not found: 'Int32 System.Environment.get_CurrentManagedThreadId()'.

Environment.CurrentManagedThreadId是.NET框架4.5的新特性,所以它是有道理的,运行4.0的服务器无法找到它。 然而,我们构建时针对.NET 4.0,因此从理论上讲,我们不应该需要安装在生产服务器上4.5。

总结一下:

  • 项目的目标是4.0
  • 构建服务器已经安装了4.5
  • 在该项目随后被部署服务器只有.NET 4.0
  • 项目失败的,错误运行时Method not found: 'Int32 System.Environment.get_CurrentManagedThreadId()'.

是什么赋予了? 是否有可能只用.NET 4.0时,DLL是用.NET 4.5的服务器内置安装在服务器上成功运行.NET 4.0的dll?

Answer 1:

这是因为4.5是就地升级到4.0。 当构建服务器编译,默认情况下,它甚至会,如果你的目标.NET 4找到4.5组件。

你可以解决这个问题,但你需要4.0参考组件添加到您的构建服务器(所以编译器发现它们),而不是仅仅依赖于.NET 4.5的版本。

有关详细信息,请参阅关于这个问题的马克Gravell的博客文章 。



文章来源: Can a build server with .NET 4.5 installed successfully deploy a project targeting 4.0 to a server with only .NET 4.0 installed?