【问题标题】:ClickOnce deployment minumum required version auto-increment with MSBuild使用 MSBuild 自动增加 ClickOnce 部署所需的最低版本
【发布时间】:2012-01-19 16:30:51
【问题描述】:

我们目前从 Visual Studio 2010 进行手动构建/发布,我们要求用户始终运行最新版本(在启动前检查并设置所需的最低版本)。我正在编写我们的部署脚本,并且使用 msbuild 构建/发布没有任何问题。但是,我还没有找到一种方法来在 msbuild 运行时自动增加所需的最低版本。通过 msbuild 发布时,我有哪些选项可以自动触发此问题?

我确实在这里看到了很多关于这个主题的文章,但它们似乎是特定于 VS 而不是 MSBuild。

【问题讨论】:

  • 我有一个干净的解决方案。请看我的回答here

标签: msbuild clickonce


【解决方案1】:

自动更新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 Tasks 可以在项目 (*.proj) 文件中指定并在构建事件期间调用。

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

实施

  1. 将以下代码复制并粘贴到打开的项目文件中,作为根&lt;Project&gt; 元素的子元素。

    <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>
    

    此代码将 ApplicationVersion 和 ApplicationRevision 作为 Format Version 任务中的参数,并将通过使用完整发布版本覆盖 MinimumRequiredVersion 来保存输出。

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


非常感谢 Kev 提供的their answer,我基本上在这里重新整理了一下,并为任何初学者添加了一点说明。 这是一个 blog post 我提出的关于这个问题的更多内容我的答案在这里。

【讨论】:

【解决方案2】:

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

【讨论】:

【解决方案3】:

我不确定你是否会以最好的方式解决这个问题。

我建议使用像 Team City 这样负责部署的持续集成 (CI) 服务器。如果发布时需要拥有最新版本的源代码,那么您可能应该将其构建到经过良好测试的 CI 构建配置中,并从可能健忘/偶尔容易出错的用户手中夺走。

【讨论】:

    【解决方案4】:

    由于您想使用 MSBuild 而不是 Visual Studio 发布,我假设您是从构建服务器发布或使用某种脚本。您可以使用Set-ProjectFilesClickOnceVersion PowerShell script 来设置 ClickOnce 应用程序版本以及强制最低要求版本为最新版本。您可能希望在运行 MSBuild 之前执行此操作。我的博客更详细地描述了how to setup your build server to accommodate publishing ClickOnce applications

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多