如何使用构建定义发布ClickOnce应用程序?

Ani*_*dil 6 clickonce tfs visual-studio

我正在通过右键单击.csproj手动发布ClickOnce应用程序.有没有办法可以直接从解决方案中做同样的事情,这样我就可以将它与构建定义一起用于持续集成?

Cec*_*SFT 4

您无法直接从解决方案发布 ClickOnce 应用程序,但可以使用 XAML 生成和 vNext 生成来生成和发布 ClickOnce 应用程序,并使用 MSBuild 参数 \xe2\x80\x9c/target:publish\xe2\x80\x9d 来让 MSBuild 创建 ClickOnce 发布文件夹。以下两个博客提供了构建和发布 ClickOnce 应用程序的详细步骤:

\n\n

使用 Team Build/VSO 构建并发布 ClickOnce 应用程序,请参考博客:\xe3\x80\x80 http://blogs.msdn.com/b/tfssetup/archive/2015/09/15/build-and-publish -a-clickonce-app-using-team-build-vso.aspx

\n\n

使用build vNext构建ClickOnce应用程序,请参考博客:http ://blogs.msdn.com/b/tfssetup/archive/2015/10/15/building-clickonce-apps-using-build-vnext.aspx

\n\n

假设您正在使用 XAML 构建,因此我想在博客中重点介绍 XAML 构建的要点。要使用 Team Build 构建和发布 ClickOnce 应用程序,您需要按照以下步骤编辑 XAML 构建定义:

\n\n
    \n
  1. 在项目属性中设置与目标相对应的发布路径。然后将您的项目签入 TFS。

  2. \n
  3. 创建模板 TFVCTemplate.12.xaml 的副本以进行自定义。为了使构建过程获得一些环境数据,您需要:

    \n\n
      \n
    • 创建两个环境变量\xe2\x80\x93 DropLocation和WorkingDirectory。

    • \n
    • 从工具箱中添加两个 GetEnvironmentVariable 类型的事件。将它们添加到流程中您喜欢的任何位置。

    • \n
    • 使用第一个方法将变量 DropLocation 设置为数据 \xe2\x80\x9cMicrosoft.TeamFoundation.Build.Activities.Extensions.WellKnownEnvironmentVariables.DropLocation\xe2\x80\x9d。

    • \n
    • 使用第二个变量将变量WorkingDirectory 设置为数据\xe2\x80\x9cMicrosoft.TeamFoundation.Build.Activities.Extensions.WellKnownEnvironmentVariables.BuildDirectory\xe2\x80\x9d。

    • \n
    • 创建 DestinationLocation 类型的新参数并设置为 In 且类型为 String。这将用于保存最终数据要去的位置(文件位置)。

    • \n
  4. \n
\n\n

我们编辑 XAML 生成定义的原因是 MsBuild 完成 ClickOnce 发布的方式。MSBuild 发布不会将文件复制到目标,它会在 bin 中创建一个文件夹并将文件放在那里。

\n\n
    \n
  1. 默认情况下,TFS 将 bin 文件夹复制到输出放置位置。但我们需要 app.publish 文件夹。为了找到一种方法从发布文件夹中获取已发布的文件。你需要:

    \n\n
      \n
    • 搜索 \xe2\x80\x9cCopy 二进制文件以删除模板内的\xe2\x80\x9d 活动。

    • \n
    • 在属性中,将现有源位置(这将是 bin 文件夹,如workingDirectory +“\\src\\Desktop\\TeamAdmin\\ClickOnceTest\\ClickOnceTest)覆盖写入类似\xe2\x80\x93workingDirectory + ” \\src\\Desktop\\TeamAdmin\\ClickOnceTest\\ClickOnceTest\\bin\\Debug\\app.publish”。

    • \n
  2. \n
  3. 添加一个事件CreateDirectory,以再次创建目录。我们可以使用之前创建的目标位置变量。并将文件从放置位置复制到所需位置。

  4. \n
  5. 现在我们可以创建一个新的构建定义并输入 DestinationLocation 和 MSBuildArguments \xe2\x80\x9c/target:publish\xe2\x80\x9d 的值并对构建进行排队。

  6. \n
\n