首页 > 解决方案 > 对 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...下)。

标签: c#visual-studio-codeomnisharp

解决方案


当您运行时,正在运行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 命令行,结果应该相同。


推荐阅读