我有一个很有趣的情况,C#项目的目标是.NET框架版本,具体取决于Visual Studio版本,而不是依赖于项目属性的Application选项卡中选定的.NET目标版本。
我安装了VS2013 premium,update 4,并且给定项目的目标是.NET 3.5
之后我安装了VS2015企业版,并使用VS2015为给定项目打开了解决方案。 Resharper建议使用nameof()运算符(这是.NET 6.0的功能)并编译,但是当我在VS2013中打开给定的解决方案时,它不再编译。
当我在VS2015中打开它时,这是项目的代码片段:
哪个编译成功。
当我在VS20103中打开它时,这是项目的代码片段:
哪个不编译。
关于此的任何线索?
更新:
重述我的问题。为什么给定的项目(以.NET 3.5为目标)在VS2015中完全编译,即使我使用了.NET 6.0功能(nameof()运算符)?
答案 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的编译器),因此它不能编译。