2009-06-01 76 views

回答

1

一個簡單的方法是複製預生成腳本中的app.config文件,您可以在應用的屬性頁面生成事件中定義該文件。

你可以做兩種:

1)創建僅部署到生產中所使用的解決方案的配置,並在劇本上,例如,開關

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

,或者,如果你只是建立一個特定的機器上發佈的配置:

2)始終運行在預生成事件的腳本:

call CheckAndReplaceAppConfig.cmd 

和CheckAndReplaceAppConfig.cmd會在這種情況下有:

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

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

隨着3.5SP1,你可以opt out of the signing;我不知道你是否可以通過IDE做到這一點 - 假設你可以通過手動(通過法師)來做到這一點,但這是更多的工作...

+0

它可以用法師完成,但我們通常選擇不同的構建版本。正如馬克所說,這很簡單。 – 2009-06-01 14:01:12

2

如果你不想重新構建應用程序,你可以試試這個辦法,直接在部署的文件工作。

作爲我們測試工作流程的一部分,我們經常爲.config文件中的差異設置同一應用程序的多個部署。我們真的不希望每次我們想要使用不同的配置文件添加新部署時都必須重新發布。由於ClickOnce要求對所有內容進行簽名和散列處理,因此不可能僅更改myapp.exe.config.deploy文件內容並期望一切正常。因此,您可以使用mage.exe更改您的清單,然後再進行更改。

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

首先,進入「應用程序文件\ 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文件時遇到防火牆問題。