Visual Studio 2019 版本 16.11.0 - 错误 CS1576:为 #line 指令指定的行号丢失或无效

Visual Studio 2019 version 16.11.0 - error CS1576: The line number specified for #line directive is missing or invalid

自更新到 Visual Studio 2019 版本 16.11.0(今天)以来,Razor MVC 视图的编译在多个项目中的多个 cshtml 文件上失败:

error CS1576: The line number specified for #line directive is missing or invalid

我已尝试在 global.json 文件中设置固定版本的 .NET Core SDK,该文件位于 MVC Web 项目 的根文件夹中,如所述here,但这也无济于事。

我遇到了同样的问题。我认为这是因为我最近将 .Net 6 更新为售前赛 7 但看起来 16.11 版本中某处存在严重错误。

我找到了解决问题的方法(至少对我而言)。

global.json 文件放入 Visual Studio 解决方案根文件夹:

{
  "sdk": {
    "allowPrerelease": false
  }
}

最初我只在我的 Web (MVC) 项目(更深一层)的根文件夹中添加了 global.json,但它没有解决问题。所以它必须是解决方案根文件夹。

更新:现在 .Net 6 不再被视为预览版,我们必须在 csproj 文件中将 LangVersion 从“最新”更改为“9”以解决此问题。

这可以通过转到工具 -> 选项 -> 环境 -> 预览功能 -> 取消选中“使用 .Net SDK 的预览(需要重新启动)”来解决。

重新启动 Visual Studio,项目将再次生成。我在 Visual Studio 2019 年打开它来测试 .Net 6,它破坏了我所有的 .Net 5 项目。

在为 Mac 2022 安装 Visual Studio 之后,Visual Studio for Mac 8.10.11 中的 .NET Core 5.0 Web 项目出现了相同的错误消息使用(正如您猜测的那样).NET Core 6.0 Preview 进行预览。如 now deleted answer.

中所述,它也可能适用于 Windows

, under Preferences → Preview Features did not include the option to use previews of the .NET SDK. Adding global.json as described in 中提到的预览功能也不起作用。

幸运的是,我确实有另一个 .NET Core 5.0 项目可以编译,所以我能够找出原因。或者至少是解决方案:这是从项目文件中删除 <LangVersion> 指示:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <LangVersion>latestmajor</LangVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <LangVersion>latestmajor</LangVersion>
  </PropertyGroup>

这让我感到惊讶,因为它指示 C# 版本,但显然这也会影响 .NET SDK 版本。

我在安装 VS 2022 后遇到了同样的问题,但是 none 的答案对我有所帮助,但它为我指明了方向。 我无法在 属性 页面中编辑语言。

我不得不向无法构建的 csproj 添加以下行。 在 属性 组中,就在我的 .netcore 3 项目的 AsseblyName 所在的位置。

<LangVersion>8</LangVersion>

“最新”的技巧没有用,所以我不得不根据使用的 .net 框架版本从这个 table select 版本:

编译器根据这些规则确定默认值:

DEFAULTS
Target          framework   C# language version default
.NET            6.x         C# 10
.NET            5.x         C# 9.0
.NET Core       3.x         C# 8.0
.NET Core       2.x         C# 7.3
.NET Standard   2.1         C# 8.0
.NET Standard   2.0         C# 7.3
.NET Standard   1.x         C# 7.3
.NET Framework  all         C# 7.3

来源: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version

我发现更新到 vs 2022 解决了我的问题

None 以上解决方案对我有用。无论如何,四处走动并更改项目文件可能会给使用不同版本 Visual Studio.

的其他团队成员带来其他问题

我最近安装了 Visual Studio Community 2022,我刚刚卸载了它,问题就消失了。我想我们会在一段时间内避免在同一台机器上同时使用 2019 年和 2022 年...