ClickOnce部署最低所需版本自动递增与MSBuild

8
我们目前使用Visual Studio 2010手动构建/发布,并要求用户始终运行最新版本(在启动前检查并设置最低所需版本)。我正在编写脚本来部署它,使用msbuild进行构建/发布没有问题。然而,我还没有找到一种方法,在msbuild运行时自动递增最低所需版本。通过msbuild发布时,我的选项是什么?
我确实看到了很多关于此主题的文章,但它们似乎都是针对VS而不是MSBuild。

我有一个干净的解决方案。请查看我的答案这里 - orad
4个回答

11

自动更新MinimumRequiredVersion

项目编辑器介绍

  1. 在解决方案资源管理器中,右键单击项目并选择“卸载项目”。

    卸载截图

  2. 一旦项目不可用,再次右键单击并选择编辑<project_name>.<lang> proj。

    打开编辑器截图

MSBuild简介

  1. 属性使用键值对来提取信息。

    • 使用属性名称作为别名,您可以使用$(OutputPath)来获取元素<OutputPath>.\bin</OutputPath>的值。
  2. 我们将使用以下属性生成ClickOnce部署。

    <MinimumRequiredVersion>1.0.0.6</MinimumRequiredVersion>
    <ApplicationRevision>7</ApplicationRevision>
    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
    
  3. MSBuild任务可以在项目(*.proj)文件中指定,并在构建事件期间调用。

    • FormatVersion是.NET 4.0及更高版本的内置任务,将ApplicationVersion和ApplicationRevision格式化为单个版本号。

实现

  1. 复制并粘贴以下代码作为根<Project>元素的子元素到打开的项目文件中。

    <Target Name="AutoSetMinimumRequiredVersion" BeforeTargets="GenerateDeploymentManifest">
      <FormatVersion Version="$(ApplicationVersion)" Revision="$(ApplicationRevision)">
        <Output PropertyName="MinimumRequiredVersion" TaskParameter="OutputVersion"  />
      </FormatVersion>
      <FormatVersion Version="$(ApplicationVersion)" Revision="$(ApplicationRevision)">
        <Output PropertyName="_DeploymentBuiltMinimumRequiredVersion" TaskParameter="OutputVersion"  />
      </FormatVersion>
    </Target>
    

    这段代码将以应用程序版本和应用程序修订作为格式版本任务的参数,并通过覆盖最小所需版本与完整发布版本来保存输出。

  2. 保存并重新加载您的项目。每次 ClickOnce 部署现在都会自动更新到最近发布的版本。


非常感谢 Kev 的答案,我在这里基本上是对其进行了再解释,以便初学者更容易理解。这是我发表的一篇关于此问题的博客文章(链接),其中更详细地展开了我的答案。


您还可以查看我的博客文章,了解有关更新MinimumRequiredVersion的更多信息。 - KyleMit

1

1

目前,我倾向于通过自定义命令行实用程序更新MinimumRequiredVersion,该实用程序将简单地读取项目文件并递增它。这是我为脚本化构建想到的唯一选项。


这正是我要建议的。我曾经为Keil uVision xml项目文件做过类似的事情,通过利用QT的xQuery模块来读取、增加版本并重新编写整个文件。http://doc.qt.nokia.com/4.7-snapshot/xmlprocessing.html - Rian Sanderson

1

我不确定你是否以最佳方式进行此操作。

我建议使用像Team City这样的持续集成(CI)服务器来负责部署。如果需要发布最新版本的源代码,则应将其构建到经过充分测试的CI构建配置中,并从可能会忘记/偶尔出错的用户手中拿走。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接