【问题标题】:TFS 2010 - building ClickOnce applicationTFS 2010 - 构建 ClickOnce 应用程序
【发布时间】:2013-04-16 08:44:32
【问题描述】:

我需要能够在 TFS 2010 中构建 ClickOnce 应用程序。它需要设置 ApplicationVersion 以及 MinimumApplicationVersion。在 TFS 2008 中,我成功地完成了以下工作......

<MSBuild Projects="e:\MyAppBuilds\test\trunk\src\MyApp.Automation.Workflow.UI\MyApp.Automation.Workflow.UI.csproj"
         Properties=" PublishDir=\\MyServer\shared\MyCompany\Testing\MyApp\;
                      ApplicationVersion=$(Major).$(Minor).$(Build).$(Revision);
                      Configuration=$(Configuration);
                      Platform=$(Platform);
                      Install=true;
                      MinimumRequiredVersion=$(Major).$(Minor).$(Build).$(Revision)"
         Targets="PublishOnly"
         ContinueOnError="true" ToolsVersion="4.0"/>

但是,通过尝试在活动中复制上述任务,我似乎无法让 MSBuild 活动正确发布应用程序。我的设置如下。

CommandLineActivities = String.Format("/property:PublishDir=""{0}"" /property:Install=""true"" /property:Configuration=""{1}"" /property:Platform=""{2}"" /property:ApplicationVersion=""{3}"" /property:MinimumRequiredVersion=""{3}"" ", BuildDetail.DropLocationRoot, platformConfiguration.Configuration, platformConfiguration.Platform, VersionNumber)

项目 localProject

目标 New String() {"Publish"}

有没有人成功做到这一点?

【问题讨论】:

  • 我一定会对这个感兴趣。是否需要自定义 Activity,或者只是额外的 MSBuild 配置

标签: tfs clickonce


【解决方案1】:

我有一个自定义构建过程模板,它是从默认过程模板分支出来的。然后,我在构建成功后添加一个部分,以对传入的新参数进行操作,该参数是字符串数组。这些是我要部署的项目。

然后,我按照 MrHinsh 的建议使用 MSBuild 活动来定位 Publish 目标。您可以像我们一样使用 CommandLineArguments 自定义版本信息。这是我用于ClickOnce 安装程序的应用程序版本的快速sn-p:

String.Format("/p:SkipInvalidConfigurations=true;ApplicationVersion={1} {0}",
              PublishArguments, 
              BuildVersion)

【讨论】:

  • 我已经尝试了几件事,基本上,这就是我现在所处的位置。我可以使用 MSBuild 活动和参数,但是,当我尝试加载它时,创建的应用程序文件给了我以下错误。 “部署中的引用与应用程序清单中定义的身份不匹配。”
  • 您是否能够从具有相同信息的 VS 手动成功发布?我的第一个猜测是对指定的信任信息有影响的版本。我不是 clickonce 专家,但名称、版本、文化和公钥令牌都用作信任标识符。
  • 谢谢瑞恩。我看看你发的链接。这真的很奇怪。如果我右键单击该项目并单击“发布”,则可以。但是,如果我在项目属性中并使用“发布”向导或“立即发布”,这些都不起作用。我只是得到“错误:无法发布,因为项目未能构建。”没有其他信息。啊。我不是 ClickOnce 方面的专家,也不是同步名称/版本/文化/公钥令牌。我用另一个应用程序做了这个并且没有这些问题。我不确定出了什么问题。
  • 我没有签署任何东西,这很奇怪。这是一个内部应用程序。我以前不必这样做。
【解决方案2】:

我认为,最好的办法是制作一个自定义的 .proj 文件 (msbuild),您可以手动调整该文件以包含您已有的呼叫。然后 TFS 可以构建自定义 .proj 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多