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

Jam*_* Ko 6 .net c# msbuild visual-studio visual-studio-2015

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

但是,此行为似乎不适用于命令行.我正在开发一个需要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 '='
Run Code Online (Sandbox Code Playgroud)

很明显,看起来csc我的PATH中找到的版本不支持C#7.我对此做了一些研究,并为C#6 找到了类似的问题,建议检查以确保调用cscfrom %PROGRAMFILES(x86)%\MSBuild\14.0\Bin而不是旧的一个来自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
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,MSBuild\14.0\Bin目录中的那个被选中,而不是旧的v4.0.30319.我另外跑了csc /version,它告诉我版本csc是1.3.1.60616,它确实只支持C#6.

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

Lex*_* Li 7

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

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

  • "众所周知,对于每个新的VS版本,您应该使用其专用提示,并加载适当的环境变量." 很难看到这句话的价值. (4认同)