ClickOnce部署与MSBuild的 - >如何通过应用程序的版本/或自动增量的当前版本号

2019-09-17 02:28发布

我们有一个Outlook插件,其中使用ClickOnce部署。

一旦在构建开发者检查,PC排队构建和应用程序发布到一个共享驱动器上的位置。

问题是,构建不会发布版本更改为当前的程序集版本,因此在以前版本的文件夹,这会导致损坏的安装说不能安装的版本发布。

我读过那篇文章 。 和我建立[组件:的AssemblyVersion( “1.0。*”)。 依然没有。

我想出了一个办法来解决这个问题,通过增加<ApplicationVersion></ApplicationVersion>在* .csproj的文件。 但我希望它是自动的。

另一个解决方法是执行msbuild.exe时:

/target:publish   /property:PublishDir="\\sharedDir\\" /property:GenerateManifests=true
/property:ApplicationVersion=1.0.0.123

而且它仍然不是自动的。 我确实想当前版本号通过其中的msbuild.exe或每次构建替换值<ApplicationVersion></ApplicationVersion>与实际的版本号。 或者有另一种方式?

Answer 1:

我也陷入了这是怎么来到这里了同样的问题。 我可以使用代码作为基础你的问题来解决。 下面是使用TFS解决步骤。

打开你的构建模板,并在工作流程的底部打开参数选项卡。 查找MSBuildArguments和修改默认值。 下面是我结束了:

// Note: You can use /p for /property and /t for /target

"/t:Publish /p:PublishDir=<PublishDirectory> /p:ApplicationVersion="
    + Date.Today.ToString("yyyy") + "."
    + Date.Today.ToString("MMdd") + "."
    + Date.Now.Hour.ToString() + "."
    + Date.Now.Minute.ToString()

当然,现在你需要保存和签入新的构建文件。 我不得不让我的生成定义使用新的价值的问题,所以我刚刚创建了一个新的构建定义。

这将创建一个新的应用程序文件夹,如:

<ApplicationName>_2013_0315_09_55

我知道这是一个新的答案,以旧的文章,所以我敢肯定,你已经找到另一种解决办法,但我希望这可以帮助别人谁想要使用ClickOnce部署TFS中。



Answer 2:

我用哈德森作为构建服务器的MSBuild做构建。 哈德森设置与版本号的环境变量。 然后我传递环境变量作为命令行参数的程序我写的解析assemlyinfo.cs文件和更新组件verison,文件版本和程序集信息的版本。

另一种方法是创建一个自定义的任务来完成,而不是可执行这个(即使现在更容易,因为它现在支持内联任务 )。 以前版本的TFS没有类似的东西在那里设置enviornment变量,但它可能会在2010年TFS已经改变。

这里有资源,可以帮助您与:

  • TFS 2010版本号和大会文件版本:完全同步与只有4.0的MSBuild

  • 以一个TFS构建过程中组装编号的控制

  • GetBuildProperties任务

此外,我们使用的是法师的命令行创建的ClickOnce应用程序和部署清单。 我们称之为法师作为Exec在MSBuild项目任务。



文章来源: ClickOnce deployment with MSBuild -> How to pass the current build number for application version/ or autoincrement