安装VS 2017后,为什么命令行csc不能编译C#7?

我刚刚下载了几天前发布的 Visual Studio 2017 RC,它支持C#7.我可以使用IDE的C#7function:

但是,此行为似乎不适用于命令行。 我正在开发一个需要csc可执行文件来处理C#7及更高版本的项目。 但是,当我尝试更改到与项目相同的目录并编译文件时,我得到了

 > csc Program.cs /target:exe Microsoft (R) Visual C# Compiler version 1.3.1.60616 Copyright (C) Microsoft Corporation. All rights reserved. Program.cs(12,23): error CS1026: ) expected Program.cs(12,25): error CS1001: Identifier expected Program.cs(12,25): error CS1002: ; expected Program.cs(12,26): error CS1002: ; expected Program.cs(12,26): error CS1513: } expected Program.cs(13,32): error CS1003: Syntax error, '=>' expected Program.cs(13,32): error CS1525: Invalid expression term '=' 

很明显,看起来我的PATH中找到的csc版本不支持C#7。我对此做了一些研究,并为C#6找到了类似的问题 ,建议检查以确保从%PROGRAMFILES(x86)%\MSBuild\14.0\Bin调用csc %PROGRAMFILES(x86)%\MSBuild\14.0\Bin而不是C:\Windows\Microsoft.NET\Framework\4.0.30319中的旧C:\Windows\Microsoft.NET\Framework\4.0.30319 ,因为后者只支持C#5。所以我这样做了:

 > where csc C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe 

如您所见,选择了MSBuild\14.0\Bin目录中的v4.0.30319 ,而不是v4.0.30319的旧v4.0.30319 。 我另外运行了csc /version ,它告诉我csc的版本是1.3.1.60616,它确实只支持C#6。

有没有人知道如何在命令行上为csc版本启用C#7function? 谢谢!

您必须启动“VS 2017 RC的开发人员命令提示符”。 然后你可以看到csc.exe的版本号为2.0。

众所周知,对于每个新的VS版本,您应该使用其专用提示符并加载适当的环境变量。

您可以从visual studio 2017命令提示符运行“where csc.exe”,并通过将其添加到Path系统变量来导出所需的csc版本。 我在类似的情况下,我需要通过命令行编译,我最终设置

 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn\ 

在系统路径中。