2015-08-31 140 views
-2

我有一個有趣的情況,C#項目根據Visual Studio版本針對.NET框架版本,而不是依賴項目屬性的「應用程序」選項卡中選定的.NET目標版本。
我有VS2013溢價,更新4,安裝和給定的項目目標.NET 3.5。
之後,我安裝了VS2015企業版,並使用VS2015給定的項目打開了解決方案。 Resharper建議使用nameof()運算符(這是.NET 6.0功能)並編譯,但是當我在VS2013中打開給定的解決方案時,它不再編譯。該項目的目標.NET框架取決於Visual Studio版本?

這裏的應用程序選項卡中的給定項目的截圖:
enter image description here

下面是我在VS2015中打開它的項目的代碼片段:它成功地編譯 enter image description here

下面是從我在VS20103打開它的項目的代碼片段:
enter image description here
根本不能編譯。

有關此的任何線索?

更新:
重述我的問題。爲什麼給定的項目(即面向.NET 3.5)在VS2015中完全編譯,即使我已經使用.NET 6.0功能(nameof()運算符)?

+1

如果你沒有VS2015,那麼你不能使用最新版本,因爲它沒有Roslyn compliler。其餘爲 –

+1

*,這是.NET 6.0功能*不,它不是。 –

+0

http://www.c-sharpcorner.com/UploadFile/7ca517/the-new-feature-of-C-Sharp-6-0-nameof-operator –

回答

0

這是正常行爲。如果您嘗試編譯VS 2005中特定的.NET 4.0,您將獲得相同的結果。使用某個VS版本,您只能使用開發到某個.NET版本的

如果我沒有記錯:

VS 2005 - .NET 2.0 
VS 2008 - .NET 3.5 
VS 2010 - .NET 4.0 
VS 2013 - .NET 4.5 

更新: .NET版本的確不是在這種情況下相關的,因爲nameof運營商是羅斯林編譯器的功能。沒有更多,沒有更多。 VS 2013肯定使用了不同的版本(至少一個不包含C#6的編譯器),因此它不能編譯。

+1

Jon Skeet在這裏有一個很好的答案,它解釋了版本號:http://stackoverflow.com/questions/247621/what-are-the-correct-version-numbers-for-c/247623#247623 – Heki

+0

看到我的問題更新 –

+1

*如果您嘗試編譯VS 2005中特定的.NET 4.0 *這並不真正相關,因爲這是與.NET Framework版本無關的語言功能。 –

相關問題