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

如何在MSBuild的.Wixproj中获取被引用项目的Configuration与Platform参数

解决方案

你可以通过以下两种方式实现该需求:

  • 方式1:显式传递自定义目标平台参数
    你可以在引导程序.wixproj中预先定义一个自定义属性,例如命名为TargetAppPlatform,构建时根据你要打对应架构的包传入对应值即可,传入后即可在项目文件中直接使用$(TargetAppPlatform)变量。
    如果你用命令行构建,直接在构建命令中附加参数即可:
    msbuild 你的引导程序项目名.wixproj /p:TargetAppPlatform=x64 /p:Configuration=Release
    如果你习惯在Visual Studio中操作,可以给解决方案新增两个配置,比如Release-x86、Release-x64,在每个配置下给引导程序项目的PropertyGroup节点中手动写死对应TargetAppPlatform的值即可。

  • 方式2:自动读取待安装项目的平台属性
    你可以直接在.wixproj中加入MSBuild的GetProjectProperty任务,直接自动拉取AppToInstall.csproj的平台属性,不需要手动传参:

    <Target Name="FetchAppProjectProperties" BeforeTargets="BeforeBuild">
      <!-- 拉取待安装项目的Platform属性 -->
      <GetProjectProperty
        ProjectFile="..\appToInstall\AppToInstall.csproj"
        PropertyName="Platform">
        <Output TaskParameter="Value" PropertyName="AppToInstall.Platform" />
      </GetProjectProperty>
      <!-- 还可以同步拉取待安装项目的Configuration属性,路径里的配置部分也不用硬写 -->
      <GetProjectProperty
        ProjectFile="..\appToInstall\AppToInstall.csproj"
        PropertyName="Configuration">
        <Output TaskParameter="Value" PropertyName="AppToInstall.Configuration" />
      </GetProjectProperty>
    </Target>
    

    加入这段配置后,你在整个.wixproj文件中都可以正常使用$(AppToInstall.Platform)、$(AppToInstall.Configuration)变量,和你在Bundle.wxs中使用的Wix预定义变量效果完全一致。
    如果你待安装的应用项目是用RuntimeIdentifier来区分x86/x64架构,直接把上面的PropertyName改成RuntimeIdentifier即可,拉出来的值就是win-x86、win-x64这类格式,路径拼接时可以省去win-前缀,更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:12:00