簡體   English   中英

可以成功安裝.NET 4.5的構建服務器將面向4.0的項目部署到僅安裝了.NET 4.0的服務器嗎?

[英]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。

總結一下:

  • 項目目標4.0
  • Build server已安裝4.5
  • 然后部署項目的服務器只有.NET 4.0
  • 項目在運行時失敗,錯誤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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM