[英]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?
我們最近在我們的持續集成構建服務器上安裝了.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。
總結一下:
Method not found: 'Int32 System.Environment.get_CurrentManagedThreadId()'.
是什么賦予了? 在使用.NET 4.5的服務器構建dll時,是否可以在僅安裝了.NET 4.0的服務器上成功運行.NET 4.0 dll?
發生這種情況是因為4.5是4.0的就地升級。 當構建服務器編譯時,默認情況下,即使您的目標是.NET 4,它也會找到4.5程序集。
您可以更正此問題,但是您需要將4.0引用程序集添加到構建服務器(以便編譯器找到它們),而不僅僅依賴於.NET 4.5版本。
有關詳細信息,請參閱Marc Gravell關於此主題的博客文章 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.