gpt4 book ai didi

msbuild - 如何在 MSBuild 中创建新属性并在 WIX 中引用它

转载 作者:行者123 更新时间:2023-12-02 10:28:23 24 4
gpt4 key购买 nike

我们需要创建一个属性来指示我们的软件版本。然后我们想在我们的 WIX 项目中使用它,即在 wxs 文件中引用它。我们不想在 wxs 文件中定义它,因为我们希望 MSBuild 也根据此版本号重命名输出文件。 PropertyGroup 中的常量定义不适合我们,原因如下:

PropertyGroup 中定义的属性是特定于配置/平台的。每当我们在 Visual Studio IDE 中从项目属性窗口修改此预处理器时,通常我们只修改特定配置/平台组合的值。 (我知道可以在 IDE 中对所有配置/平台进行修改,但实际上是通过复制所有组合来完成的。而且我们仍然有可能通过仅修改一种组合的值来破坏同步。例如,默认情况下,当我们打开项目属性窗口的构建选项卡时,它将显示事件的配置/平台)。另一方面,即使我们可以无条件地定义一个 PropertyGroup,但每当我们在 IDE 中修改它时,我们通常只是针对特定组合进行修改,而不是全部。由于我们纯粹是在 VS IDE 中构建我们的软件,因此很难维护并且容易出现问题。

我尝试在BeforeBuild目标中使用MSBuild的CreateProperty任务,但似乎在接下来的执行中该值根本不起作用。例如,如果我在 BeforeBuild 中覆盖现有属性,并且当我在 WIX 中引用它时,它仍将使用旧值。如果我创建一个全新的属性,WIX 会提示未定义的预处理器。

是否有正确的方法来做到这一点:创建 MSBuild 属性并在 WIX 中使用它?

最佳答案

您不需要使用 BeforeBuild。这绝对适用于 wixproj。

我的属性

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<DefineConstants>$(DefineConstants);foo=bar</DefineConstants>
</PropertyGroup>
</Project>

更新了wixproj

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- all other stuff -->
<Import Project="my.properties" />
</Project>

维克斯

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1$(var.foo)" Language="1033" Version="1.0.0.0" Manufacturer="$(var.foo)" UpgradeCode="863d8da1-422b-4b28-aa68-56e3190770d7">

关于msbuild - 如何在 MSBuild 中创建新属性并在 WIX 中引用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13250120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com