是否仍要在WIX wxs文件中创建自定义MSBuild属性?

是否仍要在WIX wxs文件中创建自定义MSBuild属性?,msbuild,wix,version-numbering,auto-build,Msbuild,Wix,Version Numbering,Auto Build,我的目标是在WIX3.6项目中用版本号自动命名输出msi文件。我发现这个链接: 但我们有一个稍微不同的场景:我们不想通过引用任何程序集的版本号来控制产品版本号。相反,我们只想在wix文件中分配它。具体来说,我有一个wxi文件,它定义了如下属性: <?define VersionNumber = "1.1.2000" ?> 因此,我可以在Product.wxs文件中的任何位置使用这个VersionNumber变量。但是,由于重命名输出msi文件的最简单方法似乎是在MSBuil

我的目标是在WIX3.6项目中用版本号自动命名输出msi文件。我发现这个链接: 但我们有一个稍微不同的场景:我们不想通过引用任何程序集的版本号来控制产品版本号。相反,我们只想在wix文件中分配它。具体来说,我有一个wxi文件,它定义了如下属性:

<?define VersionNumber = "1.1.2000" ?>  

因此,我可以在Product.wxs文件中的任何位置使用这个VersionNumber变量。但是,由于重命名输出msi文件的最简单方法似乎是在MSBuild中添加生成后任务,因此我必须将此版本号传递给MSBuild项目文件。这就是阻止我的原因

我尝试了另一种方法,即在MSBuild中定义VersionNumber常量并在WIX中使用它。它工作得很好,只是我必须在不同的构建/平台组合中保持不变。我们正在VS IDE中构建我们的软件,这意味着如果我们在IDE窗口中修改版本号,它将只适用于特定的构建/平台组合,而其他组合将保持不变(我知道如果我是从命令行构建的,我可以简单地传递一个版本号以覆盖现有的版本号)。这就是我不想看到的。我喜欢只在一个地方定义版本号的想法,以避免任何可能的错误


任何帮助都将不胜感激

在设置项目属性的“构建”选项卡中选择“所有配置”和“所有平台”后,定义预处理器变量

您可以通过将.wixproj中的一个元素添加到项目中来实现这一点,您只需保留版本号即可。您可以修改.wixproj,但只能修改一次。您可能可以通过合理的操作(无?)将此属性文件添加到.wixproj本身,以便可以从IDE中修改它

比如:

Version.properties

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
  <PropertyGroup>
    <WhateverTheVersionPropertyNameIs>x.x.x.x</WhateverTheVersionPropertyNameIs>
  </PropertyGroup>
</Project>

八位字节
在.wixproj文件的末尾添加

<Import Project="Version.properties"/>


为什么每次构建/平台组合都需要保留它?只需将其添加到一个没有任何条件的文件中。@fsimonazzi我刚刚更新了我的原始帖子。我可能错了,但问题是,由于我们是在VisualStudioIDE中构建软件,而不是从命令行构建软件,因此我们肯定不希望通过卸载/加载直接修改.wixproj文件(以修改版本号)。但是,如果我们从IDE修改它,VS假设我们想要为特定的构建/平台更改它,并且当我们切换到另一个构建/平台时,该值保持为原始值。感谢您的回复。我对MSBuild的了解非常有限,但我想我明白你的意思。我应该添加一个只包含版本号的新项目(如果是,这个项目的类型是什么?)。然后在这个新项目的properties IDE窗口中,我可以修改这个数字。我说得对吗?然而,我试图添加一个普通的.vbproj项目,并用您的代码覆盖,但在IDE中我看不到任何显示此属性的地方。不,只需创建一个纯文本文件并添加该内容。更新.wixproj文件一次以导入它,您应该完成。它不是Visual Studio中的项目,只是一个普通文件。如果wix项目允许,它可能是该项目中的一个文件。如果不是,则在解决方案中创建一个文件。但是,请确保在wix项目文件夹中创建,或者将导入元素更改为指向适当的位置。是的,我创建了一个纯文本文件,复制了上述内容,并将此文件重命名为Version.properties(扩展名可能无关紧要),然后在我的wixproj文件中导入它。因为我的项目实际上加载得很好,所以我假设至少位置是正确的,并且MSBuild理解这个文件。但是,我仍然找不到IDE中显示的新属性。在我的WIX项目的属性窗口中,有“安装程序”、“构建”、“构建事件”、“路径”和“工具设置”选项卡,但它们都没有。如果重要的话,我正在使用VS2012。我还需要做其他事情吗?回到IDE(我通常不依赖wixprojs)。您已经有了内置的支持,可以在一个地方进行编辑:转到“构建”选项卡,选择“所有配置”和“所有平台”,并在那里设置值。它仍然是一个副本,但用户界面会处理它。如果要坚持使用原始解决方案,则必须编辑文件,而不是查看项目属性。