c# - 对 Visual Studio Code 使用的 C# 版本感到困惑
问题描述
我在 Windows 10 (1809) 上有最新版本的 Visual Studio Code (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
警告 CS2008: No source files specified
error CS1617: Invalid option '?' 对于 /langversion;必须是 ISO-1、ISO-2、3、4、5 或默认值
但是当我csc.exe
从 VS Code 之外的 Windows 命令行运行时,指定一个完整路径,如下所示:
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...下)。
解决方案
当您运行时,正在运行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
设置以~\.vscode\extensions\ms-vscode.csharp-1.21.5\.omnisharp\1.34.5\.msbuild\Current\Bin\Roslyn\
在任何其他版本的csc.exe
.
完成此操作后,重新启动 VS Code 和 windows 命令行,结果应该相同。