是否有任何命令来获取C#编译器版本?
csc
命令接缝无法显示编译器版本。
P.S
当我在 VS2015的开发人员命令提示符中输入csc
命令时,它返回:
Microsoft (R) Visual C# Compiler version 1.3.1.60616
Copyright (C) Microsoft Corporation. All rights reserved.
但是我很确定我的C#编译器比1.3更新!
答案 0 :(得分:5)
请记住,您的计算机上至少有两个版本的csc.exe。一个是作为.NET Framework安装的一部分提供的,就像它一直一样,并遵循框架的版本编号。存储在c:\ windows \ microsoft.net \ framework \ v4.0.30319中,它保留在那里以与System.CodeDom和sgen.exe兼容。在C#语言版本5下冻结。大多数程序员在他们的机器上安装了.NET v4.7时,其版本将为4.7.x.0。
另一个作为Roslyn项目的一部分被分拆出来并存储在MSBuild目录中。使用版本号重置从1再次开始编号。当您使用开发人员命令提示符时,您将运行该编号。版本号重置的最可能原因是他们希望不被锁定到框架发布节奏,Roslyn遭受了大量的错误,需要中间版本才能修复。由解耦引起的一个值得注意的问题是在C#v7中添加了新的ValueTuple类型,这是由大大改进的元组支持所要求的。编译器在框架可用之前发布,程序员不得不退回使用Nuget包一段时间。
版本号重置不会经常发生。但是每个人都知道的另一个好例子是.NETCore,它从5.0重置为1.0。我从来没有看到过一个可靠的理由,以避免混淆",我认为这是让它看起来很新鲜的举动。
答案 1 :(得分:1)
作为 new-ish [更新:roslyn版本高于2,请参阅Cameron MacFarland的评论]的问题的字面答案,csc的版本确实有/ version开关:
c:\>csc /version
2.3.2.62116 (8522b473)
出于编写脚本的目的(如果你想打开版本说),这可能就足够了,同时测试%errorlevel%
csc /version
以放置在太旧的存储桶中。
/version
但不会出现在https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/listed-alphabetically(这似乎是最新版本),我无法找到任何列出其添加版本的内容。
更新:我也会非常小心csc报告的版本号,例如我的个人默认'位于C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn
且版本为2.3.2.62116
(文件日期为2017年2月22日),但我的版本为C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
4.7.2046.0
(文件日期为2017年3月18日) )(并没有采用/ version开关)。
所以回答
是否有任何命令可以获得C#编译器版本?
我会说,是的,也许,有时候,但是我会用一小撮盐对待那个版本,看看我报告的版本标签是csc.exe程序集的FIle版本版本较大的实体'编译csc并且Rosyln和传统'至少存在不兼容的编号方案。编译器。