2015-10-14 431 views
0

我有一個應用程序被編寫並且面向.NET Framework 4.0。 在其中一個基礎項目中,我必須添加一個在.NET 4.5中完成的引用。所以,爲了構建這個項目,我不得不將它切換到4.5的目標框架。從.Net Framework 4.0混合和調用.Net 4.5

現在,VS正在抱怨引用此基礎項目的應用程序中的每個項目。

  1. 有沒有一種方法可以使這個基礎項目的目標框架4.5,而無需改變所有引用它的項目。

  2. 我可以將這兩個框架和從.NET 4項目調用到.NET 4.5項目。

  3. 最好的解決方案是,如果我可以在基礎項目中使用基於.NET 4.5構建的新外部引用(導致所有這些麻煩),而無需將基礎項目Target更改爲.NET 4.5。那可能嗎?

基本上我想使用這個爲4.5構建的引用,而不必更改整個應用程序目標框架。

+1

爲什麼不改變它們呢? .NET 4.5是4.0的二進制替換。這意味着只需安裝運行時就可以用4.5替換4.0的二進制文件。無論如何,當你最終在4.5上運行時,沒有理由混合使用版本。您可以使用[Target Framework Migrator](https://visualstudiogallery.msdn.microsoft.com/47bded90-80d8-42af-bc35-4736fdd8cd13)等工具立即升級所有項目 –

+0

另一種選擇是保持在4.0以及使用兼容性包如Bcl.Async,Bcl.HttpClient等。這不會給你任何運行時優勢,如後臺垃圾回收 –

+0

這會導致更多的問題,而不是處理升級問題。我現在正在升級。我只是希望有一種簡單的方法可以做到這一點。再次感謝您提供所有有價值的答案。 –

回答

0

我認爲構建警告能很好地描述將會發生什麼。

我創建了兩個項目的解決方案:

  • 項目A(Framework版本4.0)
  • 項目B(Framework版本4.5)

項目A引用項目B。

警告:

The referenced project 'ProjectB' is targeting a higher framework version (4.5) than this project’s current target framework version (4.0). This may lead to build failures if types from assemblies outside this project’s target framework are used by any project in the dependency chain. 


The primary reference "c:\Scratch\ProjectA\ProjectB\bin\Debug\ProjectB.dll" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0". ProjectA C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets 1819 

最好的辦法是更新所有涉及到的項目。

+0

我知道VS的警告和錯誤。 我想我必須升級畢竟。 –

+0

這個升級的東西很明顯。實際上意味着升級不是一種選擇,因爲有一些不這樣做的原因,比如在Windows XP上運行應用程序。 – Centro