我们最近在我们的持续集成构建服务器上安装了 .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 Framework 4.5 的新属性,因此运行 4.0 的服务器找不到它是有道理的。但是,我们在构建时以 .NET 4.0 为目标,因此理论上我们不需要在生产服务器上安装 4.5。
总结一下:
- 项目目标 4.0
- 构建服务器已安装 4.5
- 然后部署项目的服务器只有 .NET 4.0
- 项目在运行时失败并出现错误
Method not found: 'Int32 System.Environment.get_CurrentManagedThreadId()'.
是什么赋予了?当 dll 由具有 .NET 4.5 的服务器构建时,是否可以在仅安装 .NET 4.0 的服务器上成功运行 .NET 4.0 dll?