2016-12-08 48 views
0

我試圖使用Click-Once發佈,麻煩是,它也發佈了配置文件,它具有我在開發計算機上使用的連接字符串,而不是正確的我在生產環境中使用的那些。我怎樣才能防止配置文件發佈超過第一次?我試圖在屬性中不包含它在發佈列表中,但沒有選擇這樣做。防止從點擊一次部署發佈配置文件

+0

我不是作者,也沒有與該項目有任何關係,但是有一個適用於app.config轉換的visual studio插件(免費,如啤酒),非常像web.config轉換引擎中內置的工作。它被稱爲SlowCheetah,它允許你根據你的構建配置文件有不同的配置設置。 https://marketplace.visualstudio.com/items?itemName=WillBuikMSFT.SlowCheetah-XMLTransformsm意思是,例如,當您執行Release部署時,您可以發佈虛擬配置文件。 – Tommy

回答

0

配置文件是Deployment的一部分,因爲它們存儲了在Addin中使用的所有必要設置。

如果我理解正確的問題,那麼,你要使用一些設置,比如HOSTURL=http://example.com當加載項是生產環境和HOSTURL=http://localhost當你正在開發的加載項和你期望這一切自動無需人爲參與。

然後,您可以嘗試下列操作之一:

[1]試着找到ClickOnceLocation和使用的設置取決於價值ClickOnceLocation。 假設您在開發/調試Addin時,ClickOnceLocation包含"Debug"

//CodeBase is the location of the ClickOnce deployment files 
Uri uriCodeBase = new Uri(assemblyInfo.CodeBase); 
string ClickOnceLocation = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString()); 
if(ClickOnceLocation.Contains("Debug")) 
{ 
    URL = "http://localhost";  
} 
else 
{ 
    URL = //from app.config 
} 

[2] Updating the app.config by using build configurations

有一些技巧可以使用,這樣的價值觀,以生產服務器不同的文件是否會在拿起公佈。

您可以有兩個單獨的配置文件,一個用於本地部署/調試,另一個用於應用程序的實際發佈或生產版本。調試配置文件可能指向本地主機服務器,而真正發佈的配置文件可能指向真實的服務器。然後,您可以配置構建配置,以便根據Active構建配置選擇適當的配置文件。

要將兩個不同的app.config文件添加到項目中,可以在項目文件中更新對app.config的引用。在app.config在項目文件(vbproj或的csproj)具有以下XML定義:

<ItemGroup> 

… 

<None Include=」app.config」 /> 

</ItemGroup> 

可能存在與在app.config節點沿的ItemGroup其他節點。刪除剛剛從該節點的ItemGroup和的app.config創建節點下的新的ItemGroup與下面的XML:

<ItemGroup Condition=」 ‘$(Configuration)|$(Platform)’ == ‘Debug|AnyCPU’ 「> 
<None Include=」app.config」 /> 
</ItemGroup> 

<ItemGroup Condition=」 ‘$(Configuration)|$(Platform)’ == ‘Release|AnyCPU’ 「> 
<None Include=」publishedapp.config」 /> 
</ItemGroup> 

這基本上意味着,當主動配置被設置爲常規app.config文件將被使用當活動配置設置爲「發佈」時,將使用調試和修改的app.config以及存儲在項目「發佈」子文件夾中的實際生產變量。

您可以更改ItemGroup條件以匹配您可能已經定義的其他構建配置。一種可能性是根據「發佈」配置定義單獨的「發佈」配置,但僅在實際發佈應用程序時使用。

此過程的額外免責聲明是VS項目系統本身和設計人員不知道額外的app.config文件; Visual Studio只知道原始文件。具有生產環境值的修改過的app.config僅由msbuild進程使用。因此,如果通過設置設計器更新主app.config,修改後的app.config將不會更新,您必須手動更新文件。

一旦您正確配置了項目,您可以簡單地在不同的構建配置之間切換,以更改配置文件並從Visual Studio發佈應用程序,而無需通過更新和重新簽名過程。

+0

非常感謝所有Answerers,我會研究這些東西,並將它們標記出來 – burech