如何同时部署两个ClickOnce版本?

Bre*_*yan 34 .net c# deployment clickonce

我希望能够为我的应用程序提供测试ClickOnce服务器,用户可以并行运行生产版本和测试版本.这可能吗?

我首先尝试使用以下内容AssemblyInfo.cs并更改ClickOnce部署中的名称,尽管所有这些都是使用测试版本覆盖用户的生产版本.同样,它们在返回生产服务器时也是如此.

#if DEBUG
[assembly: AssemblyTitle("Product Name - Test")]
#else
[assembly: AssemblyTitle("Product Name")]
#endif
Run Code Online (Sandbox Code Playgroud)

我想我还应该澄清两个部署位置彼此不同并且在不同的服务器上.

UPDATE

我也尝试根据调试模式设置清单的GUID,但它再次无法工作(下面使用虚拟GUID).

#if DEBUG
[assembly: Guid("AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA")]
#else
[assembly: Guid("BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB")]
#endif
Run Code Online (Sandbox Code Playgroud)

两者如何区分?似乎安装程序将它们视为两个单独的程序,因为我得到了每个程序的安装确认.虽然,当我安装第二个时,"添加/删除程序"只看到后者,虽然前者仍在磁盘上,因为我以后再重新安装它,它只是简单地运行,但随后添加/删除程序切换回到以前的名字.

Rob*_*sor 26

它可能听起来有点蹩脚,但最简单的方法是在您的解决方案中有两个EXE项目.其中Main每个Main方法都只调用原始EXE项目中的方法(您刚刚将其切换为DLL文件).

这意味着每个EXE项目都可以拥有自己的ClickOnce发布设置以及自己的app.config文件.这意味着您有生产和测试版本的不同连接字符串.

您的其他选项(可能看起来最有意义的选项)是使用MageUI.exe手动构建ClickOnce文件,这样您就可以在每次运行该工具时选择其他配置文件并发布位置.还有一个命令行版本(Mage.exe),所以你可以理论上自动化这个.

但是,我们发现两个"跑步者"项目的解决方案要简单得多.我建议你先尝试一下.


Rob*_*Net 14

ClickOnce:并发版本说明了如何执行此操作.

  • @RobinDotNet虽然理论上可以回答这个问题,但[最好](http://meta.stackexchange.com/q/8259)在这里包含答案的基本部分,并提供参考链接. (4认同)
  • 你只需改变三件事.部署URL,程序集名称和产品名称.我们使用源代码控制,因此我搁置了一组这些修改,并在需要时取消它们. (2认同)

Lon*_*eng 6

我手动编辑了.csproj为其指定不同的ProductName debug/release.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    ...
    <PublishUrl>publishbeta\</PublishUrl>
    <InstallUrl>http://www.softwareabc.com/download/beta/</InstallUrl>
    <ProductName>Software ABC Test</ProductName>
    <AssemblyName>SoftABCTest</AssemblyName>
    <ApplicationIcon>Resources\Test.ico</ApplicationIcon>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    ...
    <PublishUrl>publish\</PublishUrl>
    <InstallUrl>http://www.softwareabc.com/download/</InstallUrl>
    <ProductName>Software ABC</ProductName>
    <AssemblyName>SoftABC</AssemblyName>
    <ApplicationIcon>Resources\Application.ico</ApplicationIcon>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

需要注意的是,如果在调试/发布之间切换,Visual Studio 2010不会更新此项.它仅在加载解决方案时生效,因此请确保切换调试/释放然后关闭并重新打开解决方案.