我知道我有C#6编译器,并且经常使用C#6功能,当我编写应用程序来练习时,我通常以.NET v4.6为目标。C#4,5和6编译器的特定版本号以及如何知道Visual Studio用于编译我的项目的具体版本号是什么?
在这台机器上,我安装了Visual Studio 2010,2013,2015和2017。
当我在.NET Framework 4版目录键入csc.exe
,它显示我的编译器版本为4.6.1098.0为C#5,这是非常令人困惑。
C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319> CSC微软(R)为C#5版权所有(C)微软 公司 的Visual C#编译器版本4.6.1098.0。版权所有。
此编译器作为Microsoft(R).NET Framework的一部分提供, 但仅支持C#5以下的语言版本,该版本不再是最新版本的 。对于支持C# 编程语言的较新版本的编译器,看 http://go.microsoft.com/fwlink/?LinkID=533240
当我在我的另一台笔记本电脑唯一的Visual Studio 2013安装在那里我有键入相同的命令,我从得到以下输出csc.exe
命令。
C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319> CSC微软(R)为C#5版权所有(C)微软 公司 的Visual C#编译器版本4.6.1055.0。版权所有。
该编译器提供作为Microsoft(R).NET框架, 的一部分,但只支持语言版本多达C#5,这不再是 最新版本。对于支持C# 编程语言的较新版本的编译器,看 http://go.microsoft.com/fwlink/?LinkID=533240
观察它的C#5读取4.6.1055.0。
所以,我的第一个问题是:C#编译器对于C#4,5和6有哪些不同的版本号?
二,我如何知道
csc.exe
文件的哪个版本,以及哪个版本的C#编译器,我的Visual Studio安装是用来编译我的文件的?为了自己尝试,我在每台机器上都创建了一个控制台应用程序,并追踪项目文件。他们都为MS Buildbin
文件夹中的Microsoft.Csharp.targets
文件提供了MS BuildImport
指令。但是我放弃了阅读该文件,因为我还没有完全理解所有的MS Build标签。
不是真正的肯定,问题是在这里。 C#5显然使用了编译器的4.6版本。混淆来自哪里?另一个数字(“1098”)只是一个小修订/内部版本号;据推测,对C#编译器进行了多次修改。你尝试的第一个系统有一个稍微更新的版本,可能是一个或两个错误修复。它们都是C#5.另外,编译器向后兼容,这意味着C#5编译器可以定位到旧版本的C#。您可以使用项目选项和/或编译器开关进行配置。 –
[C#编译器版本和语言版本之间的区别]可能的重复(http://stackoverflow.com/questions/22814922/difference-between-c-sharp-compiler-version-and-language-version) – EpicKip
@CodyGray您可能是对的。我问的原因是:在VS 2013机器上,诸如“CallerMemberAttribute”之类的C#5功能不起作用。我想知道哪个版本的C#编译器VS 2013用来编译我的代码。 –