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:并发版本说明了如何执行此操作.
我手动编辑了.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不会更新此项.它仅在加载解决方案时生效,因此请确保切换调试/释放然后关闭并重新打开解决方案.