c# - CMake 没有为 C# 项目设置 LangVersion

标签 c# cmake

我正在尝试使用 CMake 3.16.3Visual Studio 2017 生成 C# 项目,但我在设置 C# 语言版本时遇到问题。 即使我在 CMakeLists.txt 文件的顶部这样指定它:

target_compile_options(<MyApp> PRIVATE "/langversion:latest")

或者像这样:

set(CMAKE_CSharp_FLAGS "/langversion:latest")

在 *.csproj 文件中,它始终设置如下:

<Project>
    ...
    <PropertyGroup>
        ...
        <AdditionalOptions>/langversion:latest</AdditionalOptions>
        ...
        <LangVersion>3</LangVersion>
        ...
    </PropertyGroup>
    ...
</Project>

因此,无论我在那里设置什么值,它始终是版本 3(这是最低版本)。在不指定语言版本的情况下,它设置为默认值,即 latestMajor,Version 7.0。

目前解决这个问题的唯一方法是创建 Directory.Build.props 构建文件夹中的文件。它看起来像这样:

<Project>
    <PropertyGroup>
        <LangVersion>latest</LangVersion>
    </PropertyGroup>
</Project>

我是 CMake 的新手,它的文档非常复杂,所以我可能错过了一些步骤。或者这是 CMake 中的一个错误,有人对此问题有更好的解决方案吗?

这是 projects Gitlab page 的链接

最佳答案

这是 CMake 的一个限制,最近才在版本 3.17.0 中修复。 您需要安装 CMake 3.17 版并从命令行生成解决方案。

参见 this issue在 CMake 问题跟踪器中。

关于c# - CMake 没有为 C# 项目设置 LangVersion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61069290/

相关文章:

python - 使用python支持错误编译opencv

windows - FindBoost.cmake : Use different Compiler-version (vc90 instead of vc100)

c# - WCF Web 服务序列化错误 - 返回空值

c# - 订阅 ObservableCollection 项目属性已更改 - WPF

c# - 有没有一种简单的方法可以将 32 位整数转换为 16 位整数?

c# - 两种可能的编程模式,哪一种更合适?

windows - 尝试添加 Boost Process 时 cmake 无法打开文件 optimized.lib

CMake + CPack : Install entire directory (including subfolders)

ubuntu - cmake构建错误,文件似乎不存在

c# - 确认消息框