我们需要创建一个属性来指示我们的软件版本。然后我们想在我们的 WIX 项目中使用它,即在 wxs 文件中引用它。我们不想在 wxs 文件中定义它,因为我们希望 MSBuild 也根据此版本号重命名输出文件。PropertyGroup 中的常量定义不适合我们,原因如下:
PropertyGroup 中定义的属性是特定于配置/平台的。每当我们在 Visual Studio IDE 中从项目属性窗口修改此预处理器时,通常我们只修改特定配置/平台组合的值。(我知道可以在 IDE 中为 All Config/Platform 修改它,但实际上是通过复制所有组合来完成的。而且我们仍然有可能通过只修改一个组合的值来破坏同步。例如,默认情况下,当我们打开项目属性窗口的构建选项卡时,它将显示活动的配置/平台)。另一方面,即使我们可以在没有任何条件的情况下定义一个 PropertyGroup,但每当我们在 IDE 中对其进行修改时,我们通常只是针对特定组合进行修改,而不是全部修改。由于我们纯粹是在 VS IDE 中构建我们的软件,
我尝试在 BeforeBuild 目标中使用 MSBuild 的 CreateProperty 任务,但在接下来的执行中,该值似乎根本无效。例如,如果我覆盖 BeforeBuild 中的现有属性,并且当我在 WIX 中引用它时,它仍将使用旧值。如果我创建一个全新的属性,WIX 会抱怨未定义的预处理器。
有没有合适的方法来做到这一点:创建一个 MSBuild 属性并在 WIX 中使用它?