我想在每次构建时发布我的应用程序的测试版,因此用户可以在一般发布之前访问“beta”版本并测试功能。
我尝试通过在将产品运行到[product] -beta时覆盖ProductName来执行此操作。问题是发布过程仍然会创建一个[product] .application,似乎ClickOnce魔术师不知道一个URL上的[product] .application和另一个URL上的[product] .application之间的区别。
我知道如何解决这个问题吗?
答案 0 :(得分:4)
我遇到了一个非常类似的问题,这是我提出的解决方案。
我将所有GUI表单放入包含主要启动表单的DLL中。然后我创建了两个参考我的GUI dll的EXE项目。一个名为Product,另一个名为ProductBeta EXE中的代码在两者之间几乎相同。即Application.Run(new MainForm())。
然后我将它们设置为发布到同一共享上的子目录。
这很烦人并且有一些开销,但结果非常好。
答案 1 :(得分:1)
正如您所发现的,修改产品名称是不够的。您需要修改程序集名称。
的详细信息最重要的是拥有 支持多种环境 - 这不是内置的,如果你 尝试部署两个不同的 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)" />
这种方法的一个限制是 该项目参考将不再 工作。使用基于文件的程序集引用, 它会没事的。