You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#项目的CMakeLists.txt中启用可为空引用类型?

如何在CMake中为C#项目正确启用可为空引用类型?

在CMake的C#项目中,设置LangVersion可以直接通过CMAKE_CSharp_FLAGS传递参数:

set( CMAKE_CSharp_FLAGS "-langversion:8" )

这会在生成的.csproj文件中生成对应的属性节点:

<LangVersion>8</LangVersion>

但如果尝试通过同样的方式添加-nullable参数:

set( CMAKE_CSharp_FLAGS "-langversion:8 -nullable" )

CMake会将-nullable直接放入<AdditionalOptions>节点:

<AdditionalOptions>-nullable</AdditionalOptions>

这会导致CS9632等可为空注解相关警告,因为MSBuild需要的是<Nullable>enabled</Nullable>项目属性,而非直接传递编译器参数。

正确的设置方式

CMake 3.20及以上版本(你使用的3.30.5满足要求)提供了专门的属性来配置可为空引用类型:

  1. 全局设置(对所有C#目标生效):
set(CMAKE_CSharp_NULLABLE "ENABLED")
  1. 单个目标设置(仅对指定项目生效):
add_executable(YourCSharpTarget ...)
set_property(TARGET YourCSharpTarget PROPERTY CSharp_NULLABLE "ENABLED")

通过上述方式设置后,生成的.csproj文件会自动添加:

<Nullable>enabled</Nullable>

从而正确启用可为空引用类型,避免相关编译警告。

内容的提问来源于stack exchange,提问作者DevSolar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 23:50:58