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

CMake配置C#项目:如何将OutputType设置为WinExe?

解决CMake中.NET 4.8 WPF项目OutputType设为WinExe的问题

方法1:修正.NET SDK类型(推荐)

WPF项目需要使用桌面专用SDK而非通用.NET SDK,替换你的SDK配置:

set(CMAKE_DOTNET_SDK "Microsoft.NET.Sdk.WindowsDesktop")
set(CMAKE_DOTNET_TARGET_FRAMEWORK "net48")
# 明确指定输出类型为WinExe
set(CMAKE_DOTNET_OUTPUT_TYPE "WinExe")

完成上述设置后再执行add_executable,CMake会自动生成正确的WinExe类型项目,不会出现控制台窗口。

方法2:针对目标覆盖OutputType属性(避免重复条目)

若必须使用通用SDK,可在add_executable之后,通过set_target_properties直接为目标设置属性,而非全局属性:

add_executable(${PROJECT_NAME}
    # 此处添加你的WPF源文件,如App.xaml、MainWindow.xaml等
)

set_target_properties(${PROJECT_NAME} PROPERTIES
    VS_GLOBAL_OutputType "WinExe"
    # 确保引入WPF必需的程序集
    VS_DOTNET_REFERENCES "PresentationCore;PresentationFramework;WindowsBase"
)

该方式会覆盖CMake自动生成的OutputType条目,不会产生重复配置。

方法3:针对特定配置修改属性(对应Condition属性组)

如果需要仅在Debug/Release配置下调整,可使用CMake生成器表达式:

set_target_properties(${PROJECT_NAME} PROPERTIES
    VS_GLOBAL_OutputType $<$<CONFIG:Debug>:WinExe>
    VS_GLOBAL_OutputType $<$<CONFIG:Release>:WinExe>
)

这会生成带Condition="'$(Configuration)' == 'Debug'"和Release的属性组,覆盖默认设置。

额外注意事项

  • 确保add_executable中包含WPF核心文件(如App.xaml、MainWindow.xaml),CMake需要这些文件识别项目类型。
  • 清理之前生成的CMake缓存和项目文件,避免旧配置干扰新设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:35:07