在 AppVeyor 中构建这个开源 C# 项目时,我收到错误:
CSC:错误CS1617:/langversion 选项“10”无效。使用“/langversion:?”列出支持的值。
请参阅构建日志。
在 构建设置中,选择 Visual Studio 2022 作为构建工作映像,并且预安装软件页面列出了该映像的 .NET 5 和 6 SDK。
我错过了什么?为什么使用 MSBuild 16 而不是 17?
用VS2022启动解决方案并解决问题
根据您的描述,错误:
CSC : error CS1617: Invalid option '10' for /langversion. Use '/langversion:?' to list supported values.
是由于在vs2022和.NET6.0环境下没有使用C#10导致的。
从您提供的构建日志中我们可以看到,在 VS2019 中构建使用的是 MSBuild16。
我们可以从 C:\Program Files\Microsoft Visual Studio�2\Community\MSBuild\Current\Bin\MSBuild.exe 找到随 Visual Studio 2022 Community 安装的 MSBuild.exe。
我们没有使用过AppVeyor。也许你可以尝试在命令行中指定 MSBuild(17) 的路径(不确定 AppVeyor 是否使用命令行构建?)来编译它,或者在选择构建设置时只选择 VS2022 和 .NET6.0。
问题是存储库中的
appveyor.yml
将 Visual Studio 2019 作为工作映像。 AppVeyor 的工作方式是,yml 文件优先于 UI 设置。
对于 Arch Linux 中的 JetBrains Rider 2023.2.2,这是唯一对我有用的东西:
在 .csproj 的
<PropertyGroup>
中,我添加了以下内容:
<LangVersion>10.0</LangVersion>
<TargetFramework>net8.0</TargetFramework>
然后就构建成功了。
然后,矛盾的是,我删除了
<TargetFramework>net8.0</TargetFramework>
它仍然可以编译???