ClickOnce如何将app.config从开发更改为部署?

时间:2009-06-01 13:43:13

标签: clickonce

我有一个开发app.config和一个部署app.config。我需要clickonce在部署时更改它。这是否可以自动完成?

4 个答案:

答案 0 :(得分:3)

如果您不想重新构建应用程序,可以尝试这种直接适用于已部署文件的方法。

作为我们测试工作流程的一部分,我们经常设置同一应用程序的多个部署,只有.config文件中的差异。每次我们想要使用不同的配置文件添加新部署时,我们实际上不希望重新发布。由于ClickOnce要求对所有内容进行签名和散列,因此无法仅更改myapp.exe.config.deploy文件内容并期望一切正常。因此,您可以做的是在进行更改后使用mage.exe更新您的清单。

如上所述here,你基本上需要做的是:

首先,转到部署目录中的“Application Files \ MyApp_1_2_3_4 \”目录

您必须将所有文件从something.extension.deploy重命名为something.extension

然后运行:

mage -Update "Application Files\MyApp_1_2_3_4\myapp.exe.manifest"
mage -Sign "Application Files\MyApp_1_2_3_4\myapp.exe.manifest" -CertHash my_ceritficate_thumbnail

然后将文件重命名为原始名称(添加.deploy扩展名)

最后,运行:

mage -Update MyApp.xbap -appmanifest "Application Files\MyApp_1_2_3_4\myapp.exe.manifest"
mage -Sign MyApp.xbap -CertHash my_certificate_thumbnail

或者,为避免重命名文件,您可以告诉Visual Studio在发布时不要添加.deploy扩展名(转到Visual Studio项目中的发布...选项),下次发布时,文件不会获得该扩展名。我唯一猜测的危险就是在某些用户尝试下载.exe.dll文件时遇到防火墙问题。

答案 1 :(得分:2)

答案 2 :(得分:1)

一种简单的方法是在预构建脚本中复制app.config文件,您可以在应用程序的属性页构建事件中定义。

您可以这样做:

1)创建一个仅用于部署到生产的解决方案配置,并在脚本中打开它,例如

if  ($(ConfigurationName)) == (PublishConfig) call ReplaceAppConfig.cmd

或者,如果您只在特定计算机上构建发布配置:

2)始终在预构建事件中运行脚本:

call CheckAndReplaceAppConfig.cmd
在这种情况下,

和CheckAndReplaceAppConfig.cmd将具有:

IF (%MACHINENAME%)==(PUBLISH_SERVER) ReplaceAppConfig.cmd

答案 3 :(得分:0)

如果您使用的是VS工具,那么配置文件都是部署签名部分的一部分。因此,最好的方法是使用 build 工具 - 即使用dev / live / etc配置文件构建不同的版本。

使用3.5SP1,你可以opt out of the signing;我不知道你是否可以通过IDE做到这一点 - 如果你手动(通过法师)你可以做到这一点,但这还有很多工作......