使用TeamCity发布ClickOnce应用程序

问题描述 投票:9回答:2

让Visual Studio 2015解决方案发布ClickOnce应用程序的最简单方法是什么?是否可以更改ClickOnce设置参数,例如运行构建时更新URL?

teamcity clickonce
2个回答
20
投票

事实证明这很容易:

  • 构建步骤是“MSBuild”
  • 构建文件指向Visual Studio解决方案
  • 将“目标”设置为“发布”
  • 添加“命令行参数”:/property:PublishDir="C:\\Users\TeamCity\\Desktop\\publish\\" <= ClickOnce工件的放置位置

我还有另一个命令行参数/property:InstallUrl="http://my.domain/app/"所以我可以为不同的构建(测试/生产)设置不同的安装位置。

然后我在* .csproj文件中添加了对此参数的引用:

<InstallUrl Condition="'$(InstallUrl)' == ''">http://default.domain/app/</InstallUrl>
<InstallUrl Condition="'$(InstallUrl)' != ''">$(InstallUrl)</InstallUrl>

您可能还需要* .csproj中的这些以使您的ClickOnce应用版本与TeamCity内部版本号同步:

<ApplicationVersion Condition="'$(build_number)' == ''">1.0.0.2</ApplicationVersion>
<ApplicationVersion Condition="'$(build_number)' != ''">$(build_number)</ApplicationVersion>
<BuildNumber Condition="'$(build_number)' == ''">1.0.0.2</BuildNumber>
<BuildNumber Condition="'$(build_number)' != ''">$(build_number)</BuildNumber>

并将构建号格式(Build Configuration> General Settings)设置为1.0.0.%build.counter%。手动增加应用程序的主要/次要。

然后我做的是创建3个构建步骤,其中包含3个不同版本的上述版本,用于开发,测试和生产。所以我有相同的ClickOnce应用程序版本,它将从我的开发,测试和生产网站安装和自动更新(我将所有3个版本添加到网站的代码存储库中)。

我还将“AssemblyInfo修补程序”功能添加到TeamCity构建配置中,并将“system.Configuration”参数设置为“Release”。


1
投票

戴夫上面的回答非常有帮助(谢谢戴夫!)。鉴于这是TeamCity - ClickOnce特定问题,我想我添加了一些截图(TeamCity v2017.2)

  1. 我创建了两个配置(dev,prod),一个在每次提交时触发,另一个是手动(prod)。

dev and prod

  1. 我使用Targets:Clean,Build,Publish创建了一个构建步骤
  2. 两个构建配置都将使用配置版本

Build Step

  1. 两种配置的不同之处在于参数设置。我希望dev和prod发布ClickOnce文件以分隔通过设置system.PublishDir指定的文件夹
  2. 我还希望可以从单独的URL访问dev和prod,这可以通过使用system.InstallUrl来完成
  3. 确保使用/终止您的PublishDir和InstallUrl,否则您将收到404下载错误或目录路径错误。

Build Parameters 7.最后确保你的Configuration WinForms项目设置为build(这让我),否则TeamCity将不会生成ClickOnce文件。

Release set to build

© www.soinside.com 2019 - 2024. All rights reserved.