该项目的目标.NET框架取决于Visual Studio版本?

时间:2015-08-31 11:08:57

标签: c# .net visual-studio visual-studio-2013 visual-studio-2015

我有一个很有趣的情况,C#项目的目标是.NET框架版本,具体取决于Visual Studio版本,而不是依赖于项目属性的Application选项卡中选定的.NET目标版本。
我安装了VS2013 premium,update 4,并且给定项目的目标是.NET 3.5 之后我安装了VS2015企业版,并使用VS2015为给定项目打开了解决方案。 Resharper建议使用nameof()运算符(这是.NET 6.0的功能)并编译,但是当我在VS2013中打开给定的解决方案时,它不再编译。

以下是给定项目的Application选项卡的屏幕截图:
enter image description here

当我在VS2015中打开它时,这是项目的代码片段: enter image description here
哪个编译成功。

当我在VS20103中打开它时,这是项目的代码片段:
enter image description here
哪个不编译。

关于此的任何线索?

更新:
重述我的问题。为什么给定的项目(以.NET 3.5为目标)在VS2015中完全编译,即使我使用了.NET 6.0功能(nameof()运算符)?

1 个答案:

答案 0 :(得分: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运算符是Roslyn编译器的一个特性。没有更多,没有更少。 VS 2013绝对使用不同的(至少是一个不掩盖C#6的编译器),因此它不能编译。