为什么安装了VS 2017后命令行中的csc无法编译C# 7代码?

6

我刚刚下载了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 '='

显然,我的PATH中找到的csc版本不支持C# 7。我查了一下资料,发现有一个关于C# 6的类似问题,建议检查是否从%PROGRAMFILES(x86)%\MSBuild\14.0\Bin调用csc而非旧版的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。此外,我还运行了 csc /version 命令,告诉我 csc 版本为 1.3.1.60616,只支持 C# 6。

请问有谁知道如何在命令行上启用 C# 7 功能?谢谢!


2
14.0是VS2015的版本号,而不是VS2017。因此它仍然是旧版本。请使用2017开发人员命令提示符并重复where命令以查找新版本。 - Hans Passant
2个回答

7

你需要启动 "Visual Studio 2017 RC 的开发者命令提示符"。然后你会发现 csc.exe 的版本号为 2.0。

众所周知,每次新的 Visual Studio 版本发布后,你应该使用相应的命令提示符来加载适当的环境变量。


5
众所周知,对于每个新的Visual Studio版本,应该使用其专用提示符并加载适当的环境变量。我很难看到这条评论的价值所在。 - Stevens Miller

3

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

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

系统路径中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接