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

Unh*_*ean 8 msbuild clickonce

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

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

Kyl*_*Mit 11

MinimumRequiredVersion自动更新

项目编辑器简介

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

    卸载的屏幕截图

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

    Opening Editor的屏幕截图

MSBuild简介

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

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

    <MinimumRequiredVersion>1.0.0.6</MinimumRequiredVersion>
    <ApplicationRevision>7</ApplicationRevision>
    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
    
    Run Code Online (Sandbox Code Playgroud)
  3. MSBuild Tasks 可以在项目(*.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>
    
    Run Code Online (Sandbox Code Playgroud)

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

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


非常感谢Kev 的回答,我已经基本上对此进行了重点介绍,并为所有初学者提供了一些补充说明.这是我发表的关于这个问题的博客文章,在这里我的答案更加广泛.