Visual studio 2013 通过Jekins服务器上的MSBuild设置WiX项目的产品版本。什么';这里怎么了?

Visual studio 2013 通过Jekins服务器上的MSBuild设置WiX项目的产品版本。什么';这里怎么了?,visual-studio-2013,jenkins,msbuild,wix,Visual Studio 2013,Jenkins,Msbuild,Wix,我试图通过Jenkins对MSBuild项目的调用,将动态确定的产品版本传递给WiX项目 对于初学者,我认为问题实际上不在Jenkins身上,因为我无法从VS2013命令提示符下运行MSBuild,而版本硬编码到我们的MSBuild项目文件中 MSBuild项目文件设置为使用以下参数从Jenkins运行:/p:Configuration=Release/p:Platform=“x86”/p:AllowUnsafeBlocks=true MSBuild项目如下所示: $(MSBuildProj

我试图通过Jenkins对MSBuild项目的调用,将动态确定的产品版本传递给WiX项目

对于初学者,我认为问题实际上不在Jenkins身上,因为我无法从VS2013命令提示符下运行MSBuild,而版本硬编码到我们的MSBuild项目文件中

MSBuild项目文件设置为使用以下参数从Jenkins运行:
/p:Configuration=Release/p:Platform=“x86”/p:AllowUnsafeBlocks=true

MSBuild项目如下所示:


$(MSBuildProjectDirectory)\.build
0
9
1.
$(建筑编号)
$(MSBuildProjectDirectory)\\最新版本\
配置=$(配置)
看看:


$([System.Text.RegularExpressions.Regex]::匹配($(TF\u BUILD\u BUILDNUMBER),“\d+。\d+。\d+。\d+”)
1.0.0
WiXProductVersion=$(MSIProductVersion)



调用MSBuild时传递
/p:MSIProductVerison=1.2.3.4
。或者,您可以设置环境变量TF_BUILD_NUMBER,因为现在TFS就是这样做的。

不知道Jenkins的情况,但msbuild/wxs看起来不错。与我下面的答案类似,我知道它是从TFS和.BAT文件调用的。将版本作为参数传递的第一个问题是,我不知道如何通过这种方式从Jenkins处获取内部版本号。(我认为构建编号不是严格必需的,因此这不是一个限制。)另一个(也是主要的)问题是Jenkins参数不在任何版本控制中,就像msbuild项目一样。如果可能的话,我希望它能从构建项目中获取。(如果不是这样的话,我想我会坚持那样做。)我会从一个简单的HelloWorld.proj开始,它会生成一条消息文本,并首先进行练习。我曾经帮助一位客户建立了一个哈德逊模型,我不记得它有问题。你看到我上面的编辑了吗?在我的声明完成之前我无意中发布了。这太完美了。我不知道为什么从TFS/Jenkins生成编译时变量并将其传递给MSBuild,然后在WIX中使用它们会如此困难。
<PropertyGroup>
    <!-- If MSIProductVersion not passed in, try to get it fom TFBuild Environments-->
    <MSIProductVersion Condition=" '$(MSIProductVersion)' == '' ">$([System.Text.RegularExpressions.Regex]::Match($(TF_BUILD_BUILDNUMBER), "\d+.\d+.\d+.\d+"))</MSIProductVersion>
    <!-- If we still don't have a value, default to 1.0.0 for developer builds -->
    <MSIProductVersion Condition=" '$(MSIProductVersion)' == '' ">1.0.0</MSIProductVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <DefineConstants>WiXProductVersion=$(MSIProductVersion)</DefineConstants>
</PropertyGroup>
<Product Id="*" Name="IsWiX" Language="1033" Version="$(var.WiXProductVersion)"
           Manufacturer="ISWIX LLC" UpgradeCode="$(var.UpgradeCode)">