对 Visual Studio 代码使用的 C# 版本感到困惑
Confused by the version of C# used by Visual Studio Code
我在 Windows 10 (1809) 上有最新版本的 Visual Studio 代码 (1.39.2)。我还安装了 OmniSharp C# 扩展(扩展标识符 ms-vscode.csharp,版本 1.21.5)。
当我从集成终端运行命令csc -langversion:?
时,我得到:
Microsoft (R) Visual C# Compiler version 4.7.3190.0
for C# 5
warning CS2008: No source files specified
error CS1617: Invalid option
'?' for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default
但是当我从 VS Code 之外的 Windows 命令行 运行 csc.exe
时,指定完整路径,如下所示:
C:\Users\myaccount\.vscode\extensions\ms-vscode.csharp-1.21.5\
.omnisharp.34.5\.msbuild\Current\Bin\Roslyn\csc.exe -langversion:?
我得到:
Supported language versions:
default
1
2
3
4
5
6
7.0 (default)
7.1
7.2
7.3 (latest)
latest
我知道 VS Code 的终端可能会选择不同版本的 csc.exe
,但为什么会出现差异?如何配置 VS Code 以便我可以使用最新的 C# 编译器?
编辑:
我想真正让我困惑的是为什么 VS Code 没有使用安装在它自己的目录结构下的 csc.exe
(即在 .vscode\extensions\ms-vscode.csharp-1.21.5.. .).
当您 运行 csc -langversion:?
时,通过 PATH
环境变量找到的编译器版本正在 运行。但是,当您 运行 ~\.vscode\extensions\ms-vscode.csharp-1.21.5\.omnisharp.34.5\.msbuild\Current\Bin\Roslyn\csc.exe -langversion:?
时,csharp 扩展使用的编译器版本是 运行。这些将与 csc.exe
的 copy/version 不同。
VS Code 中的终端(CMD 或 Powershell)不是这些的特殊版本,它们没有设置任何额外的环境变量,因此您应该会看到相同的结果。
要补救此差异,请在您的系统上安装最新版本的编译器,或更新您的 PATH
设置以在 csc.exe
的任何其他版本之前包含 ~\.vscode\extensions\ms-vscode.csharp-1.21.5\.omnisharp.34.5\.msbuild\Current\Bin\Roslyn\
。
完成此操作后,重新启动 VS Code 和 windows 命令行,结果应该相同。
我在 Windows 10 (1809) 上有最新版本的 Visual Studio 代码 (1.39.2)。我还安装了 OmniSharp C# 扩展(扩展标识符 ms-vscode.csharp,版本 1.21.5)。
当我从集成终端运行命令csc -langversion:?
时,我得到:
Microsoft (R) Visual C# Compiler version 4.7.3190.0
for C# 5
warning CS2008: No source files specified
error CS1617: Invalid option '?' for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default
但是当我从 VS Code 之外的 Windows 命令行 运行 csc.exe
时,指定完整路径,如下所示:
C:\Users\myaccount\.vscode\extensions\ms-vscode.csharp-1.21.5\
.omnisharp.34.5\.msbuild\Current\Bin\Roslyn\csc.exe -langversion:?
我得到:
Supported language versions:
default
1
2
3
4
5
6
7.0 (default)
7.1
7.2
7.3 (latest)
latest
我知道 VS Code 的终端可能会选择不同版本的 csc.exe
,但为什么会出现差异?如何配置 VS Code 以便我可以使用最新的 C# 编译器?
编辑:
我想真正让我困惑的是为什么 VS Code 没有使用安装在它自己的目录结构下的 csc.exe
(即在 .vscode\extensions\ms-vscode.csharp-1.21.5.. .).
当您 运行 csc -langversion:?
时,通过 PATH
环境变量找到的编译器版本正在 运行。但是,当您 运行 ~\.vscode\extensions\ms-vscode.csharp-1.21.5\.omnisharp.34.5\.msbuild\Current\Bin\Roslyn\csc.exe -langversion:?
时,csharp 扩展使用的编译器版本是 运行。这些将与 csc.exe
的 copy/version 不同。
VS Code 中的终端(CMD 或 Powershell)不是这些的特殊版本,它们没有设置任何额外的环境变量,因此您应该会看到相同的结果。
要补救此差异,请在您的系统上安装最新版本的编译器,或更新您的 PATH
设置以在 csc.exe
的任何其他版本之前包含 ~\.vscode\extensions\ms-vscode.csharp-1.21.5\.omnisharp.34.5\.msbuild\Current\Bin\Roslyn\
。
完成此操作后,重新启动 VS Code 和 windows 命令行,结果应该相同。