如何发布ClickOnce应用程序的测试版?

时间:2009-04-15 03:38:10

标签: c# clickonce

我想在每次构建时发布我的应用程序的测试版,因此用户可以在一般发布之前访问“beta”版本并测试功能。

我尝试通过在将产品运行到[product] -beta时覆盖ProductName来执行此操作。问题是发布过程仍然会创建一个[product] .application,似乎ClickOnce魔术师不知道一个URL上的[product] .application和另一个URL上的[product] .application之间的区别。

我知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

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

我将所有GUI表单放入包含主要启动表单的DLL中。然后我创建了两个参考我的GUI dll的EXE项目。一个名为Product,另一个名为ProductBeta EXE中的代码在两者之间几乎相同。即Application.Run(new MainForm())。

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

这很烦人并且有一些开销,但结果非常好。

答案 1 :(得分: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)" />
  

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