2009-04-15 60 views
2

我想在每次构建时发布我的应用程序的测试版,因此用户可以在常规发行版之前访问“测试版”并测试功能。如何发布ClickOnce应用程序的测试版?

我试着通过覆盖ProductName,同时将其运行到[product] -beta来做到这一点。问题是发布过程仍然会创建一个[product] .application,并且似乎ClickOnce魔术不知道一个URL上的[product] .application与另一个上的[product] .application之间的区别。

任何想法,我会如何解决这个问题?

回答

4

我遇到了一个非常类似的问题,这里是我提出的解决方案。

我把我所有的GUI形式放入一个包含主启动窗体的DLL中。然后我创建了2个引用我的GUI DLL的EXE项目。一个名称为Product和另一个ProductBeta。
EXE中的代码在两者之间几乎相同。即Application.Run(new MainForm())。

然后我将它们设置为发布到相同共享上的子目录。

这很烦人,并有一点开销,但结果工作得很好。

1

正如您发现的那样,修改产品名称是不够的。您需要修改程序集名称。从http://weblogs.asp.net/sweinstein/archive/2008/08/24/top-5-secrets-of-net-desktop-deployment-wizards.aspx

详细,最重要的是有多个环境 支持 - 这不是内置的,如果你 尝试部署两个不同的 的ClickOnce构建具有相同 部署名称到不同的网站, 最新版本将优先 并有效覆盖桌面上现有的 部署。

修复此问题相对简单 - 您需要为每个 构建提供 不同的部署名称。像这样 -

<MSBuild 
    Projects="ClickOnce.csproj" 
    Targets="Publish" 
    Properties=" 
      MinimumRequiredVersion=$(MinimumRequiredVersion); 
      ApplicationVersion=$(ApplicationVersion); 
      ApplicationRevision=$(ApplicationRevision); 
      CodeBranch=$(CodeBranch); 
      DeployEnv=$(DeployEnv) 
      AssemblyName=ClickOnce.$(DeployEnv); 
      PublishUrl=$(PublishUrl); 
      ProductName=ClickOnce $(CodeBranch) $(DeployEnv)" /> 

这种方法的一个限制是 该项目的引用将不再 工作。使用基于文件的装配参考, ,它会没事的。

相关问题