ClickOnce部署最低要求版本自动增加MSBuild

时间:2012-01-19 16:30:51

标签: msbuild clickonce

我们目前从Visual Studio 2010进行手动构建/发布,我们要求用户始终运行最新版本(在启动前检查和最低要求的版本集)。我正在编写部署脚本,并且没有使用msbuild构建/发布的问题。但是,我没有找到一种在msbuild运行时自动增加所需最低版本的方法。我有什么选择在通过msbuild发布时自动阻止它?

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

4 个答案:

答案 0 :(得分:11)

自动更新MinimumRequiredVersion

项目编辑器简介

  1. 在Solution Explorer中,右键单击您的项目并选择卸载项目。

    Screenshot of Unloading

  2. 项目不可用后,再次右键点击并选择修改 <project_name>.<lang> 项目。

    Screenshot of Opening Editor

  3. 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格式化为单个版本号。
    4. 实施

      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>
        

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

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


      3. 非常感谢Kev for their answer我已经基本上重新对这里做了一些补充说明。这是blog post我提出的问题在这里我的答案进一步扩展。

答案 1 :(得分:1)

现在,我倾向于通过自定义命令行实用程序更新MinimumRequiredVersion,该实用程序只需读入项目文件并递增它。这是我为编写脚本编写出来的唯一选择。

答案 2 :(得分:1)

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

我建议使用负责部署的Team City等持续集成(CI)服务器。如果拥有最新版本的源代码是发布的必要条件,那么您可能需要构建一个经过良好测试的CI构建配置,并从潜在的健忘/偶尔容易出错的用户手中夺走。< / p>

答案 3 :(得分:1)

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