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

使用MSBuild构建Delphi项目组时,如何跳过无Win64平台的项目?

解决Delphi 10.3项目组MSBuild构建未配置平台的问题

方法1:修改项目组文件添加条件判断

Delphi项目组文件(.groupproj)默认会强制所有项目按指定平台构建,不管项目本身是否配置了该平台。你可以给每个项目引用节点添加条件,仅当项目包含Win64平台配置时才构建它。

打开你的项目组文件,找到每个<ProjectReference>节点,添加Condition属性:

<ProjectReference Include="YourProject.dproj">
  <Project>{项目GUID}</Project>
  <!-- 仅当项目存在且包含Win64平台配置时才参与构建 -->
  <Condition>Exists('YourProject.dproj') and $([MSBuild]::GetContentOfFile('YourProject.dproj').Contains('<Platform Name="Win64"/>'))</Condition>
</ProjectReference>

这个条件会读取项目文件内容,自动识别是否包含Win64平台定义,只有符合条件的项目才会在/p:Platform=Win64构建时被执行。

方法2:通过IDE配置管理器调整构建选项

在Delphi IDE里直接配置项目组的Win64构建范围,无需修改代码:

  • 右键点击项目组,选择配置管理器
  • 在「活动解决方案平台」下拉菜单中选择Win64
  • 对每个未配置Win64的项目,取消勾选「生成」列的复选框
  • 保存项目组配置

之后用MSBuild构建项目组时,会自动遵循这个配置,跳过未勾选的项目。

方法3:用脚本筛选并构建支持Win64的项目

如果不想修改项目组文件或IDE配置,可以用PowerShell脚本先筛选出支持Win64的项目,再逐个构建:

PowerShell脚本示例:

# 读取项目组中的所有项目路径
$projGroupContent = Get-Content "YourGroup.groupproj"
$projectPaths = $projGroupContent | Select-String -Pattern 'Include="(.*\.dproj)"' | ForEach-Object { $_.Matches.Groups[1].Value }

# 筛选出包含Win64平台配置的项目
$win64Projects = @()
foreach ($projPath in $projectPaths) {
    if (Get-Content $projPath | Select-String -Pattern '<Platform Name="Win64"/>') {
        $win64Projects += $projPath
    }
}

# 逐个构建符合条件的项目
foreach ($proj in $win64Projects) {
    msbuild $proj /p:Platform=Win64 /t:Build
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:47:41