簡體   English   中英

使用.NET 4.0編譯器編譯.NET 3.5項目

[英]Compiling .NET 3.5 project using .NET 4.0 compiler

我有一個包含幾個項目的解決方案。 由於存在依賴性,測試項目之一正在使用.NET 4.0。 我要構建的可部署項目針對的是.NET 3.5編譯器。 我們當前的構建腳本不夠細致,無法逐個項目地針對不同的.NET編譯器。 基本上,我只能為解決方案中的每個項目使用一個編譯器。

.NET 4.0編譯器是否足夠智能以編譯3.5代碼?

解決方案結構

  • Project 1 .NET 3.5(可部署)
  • Project 2 .NET 4.0(用於自動構建周期中的測試)

注意:我不能僅僅忽略Project 2,因為我們的自動構建服務器在項目2中運行單元測試。所有測試必須在構建成功之前通過。

編輯:

我不在Visual Studio中編譯此代碼。 我們有一個自定義生成腳本,該腳本在Visual Studio外部運行。 僅使用1 .NET編譯器足夠聰明。 它使用此編譯器來編譯給定解決方案中的所有項目。 生成腳本不在乎是否將項目定義為針對3.5或4.0進行編譯。 而是使用定義的編譯器編譯它們。

項目1不引用項目2。項目2是包含單元測試的項目。 我們的自動化構建工具僅編譯項目2即可運行測試。

編輯

Op澄清了問題是評論為

4.0編譯器可以編譯3.5項目嗎

答案是可以的。

在解決方案資源管理器中右鍵單擊“ Project 1”項目。 接下來單擊屬性(熱鍵為ALT + Enter)。 在應用程序選項卡下,有一個“目標框架”下拉列表。 將其設置為3.5。

現在,當您編譯(聽起來像您在使用命令行)時,請使用MSBuild ,而不指定目標框架版本。 只需編譯解決方案文件,每個項目都將正確編譯。

根據所使用的庫的類型,您可能會遇到問題。 特別是,我遇到了在4.0中實現的3.5中不存在的名稱空間/類名稱的問題。

如果您正在做一些深奧的事情,例如將NHibernate源代碼編譯為解決方案的一部分,則會遇到問題。 否則,如果您不使用任何名稱空間,那么將3.5項目編譯為4.0時就不會有問題。

接受鮑勃的答案有什么問題? 您是否正在使用自定義生成解決方案(即,不是Visual Studio)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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