【问题标题】:Confused by the version of C# used by Visual Studio Code对 Visual Studio Code 使用的 C# 版本感到困惑
【发布时间】:2019-11-04 11:27:39
【问题描述】:

我在 Windows 10 (1809) 上安装了最新版本的 Visual Studio Code (1.39.2)。我还安装了 OmniSharp C# 扩展(扩展标识符 ms-vscode.csharp,版本 1.21.5)。

当我从集成终端运行命令csc -langversion:? 时,我得到:

Microsoft (R) Visual C# 编译器版本 4.7.3190.0
对于 C# 5
警告 CS2008:未指定源文件
错误 CS1617:选项无效 “?”对于 /langversion;必须是 ISO-1、ISO-2、3、4、5 或默认值

但是当我从 VS Code 之外的 Windows 命令行运行 csc.exe 时,指定一个完整路径,如下所示:

C:\Users\myaccount\.vscode\extensions\ms-vscode.csharp-1.21.5\
    .omnisharp\1.34.5\.msbuild\Current\Bin\Roslyn\csc.exe -langversion:?

我明白了:

支持的语言版本:
默认
1
2
3
4
5
6
7.0(默认)
7.1
7.2
7.3(最新)
最新的

我知道 VS Code 的终端可能会选择不同版本的 csc.exe,但为什么会出现差异,以及如何配置 VS Code 以便我可以使用最新的 C# 编译器?

编辑:

我想真正让我困惑的是为什么 VS Code 不使用安装在它自己的目录结构下的csc.exe(即在 .vscode\extensions\ms-vscode.csharp-1.21.5...) .

【问题讨论】:

  • 从问题中不清楚,但是您是否从 VS Code 终端运行了完整的命令(~\.vscode\extensions\ms-vscode.csharp-1.21.5\.omnisharp\1.34.5\.msbuild\Current\Bin\Roslyn\csc.exe -langversion:?)?还是来自普通命令行的简短版本 (csc -langversion:?)?
  • @phuzi 你是对的,我编辑了这个问题来澄清。非常感谢。
  • 当我从 VS2019 PowerShell 运行 csc -langversion:? 时,我会升级到并包括 8.0。这是运行C:\VS2019\Enterprise\MSBuild\Current\bin\Roslyn\csc.exe。在默认的 PowerShell 配置文件中,找不到 csc,exe。所以这一切都取决于所使用的配置文件,以及PATH 环境变量中列出的文件夹。
  • @Richard 刚刚用 PowerShell 试了一下,结果和 VS Code 一样。

标签: c# visual-studio-code omnisharp


【解决方案1】:

当您运行csc -langversion:? 时,正在运行通过PATH 环境变量找到的编译器版本。但是,当您运行~\.vscode\extensions\ms-vscode.csharp-1.21.5\.omnisharp\1.34.5\.msbuild\Current\Bin\Roslyn\csc.exe -langversion:? 时,csharp 扩展正在使用的编译器版本正在运行。这些与csc.exe 的副本/版本不同。

VS Code 中的终端(CMD 或 Powershell)不是它们的特殊版本,它们没有设置任何额外的环境变量,因此无论哪种方式,您都应该看到相同的结果。

要纠正这种差异,请在您的系统上安装最新版本的编译器,或者更新您的 PATH 设置以在任何其他版本的 csc.exe 之前包含 ~\.vscode\extensions\ms-vscode.csharp-1.21.5\.omnisharp\1.34.5\.msbuild\Current\Bin\Roslyn\

完成此操作后,重新启动 VS Code 和 windows 命令行,结果应该相同。

【讨论】:

  • 谢谢。但是为什么 OmniSharp 扩展不覆盖 PATH?毕竟,通过安装那个扩展,VS Code 用户不是在说“给我你最新的”吗?
  • “VS Code 中的终端并不特殊”——你是对的,这是你答案的关键部分。
猜你喜欢
  • 1970-01-01
  • 2016-05-19
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
相关资源
最近更新 更多