2011-11-10 66 views
0

我正在研究具有多個項目的解決方案。C#app.config在多個項目之間共享

我按照這裏所描述的方法(即建議使用一個共同的溶液項的第一響應):single app.config multi-project c#

其結果是,爲每個項目,app.config文件被複制和重命名等XXX.exe。配置。

但是,理想的輸出是每個項目的配置文件名保持不變(例如App.config)。因爲我想在部署時將所有可執行文件和DLL放在同一個文件夾中(某些可執行文件引用同一個DLL,因此將它們放在一起是有意義的)。

任何建議表示讚賞。

+3

爲什麼您需要每個項目的相同配置文件的副本?爲什麼不把你的價值觀念閱讀成一個項目,並讓這個項目公開分享這些價值觀,讓它們可以用於其他項目? – Bernard

+0

@Bernard。在生產環境中,從配置文件(並具有多個配置文件和共享配置設置)驅動設置很有意義。我正在開發一個包含30多個服務項目(Web和Win託管的WCF)的項目,並且通用設置的數量讓我們感到憤怒(直到我們將它們全部更改爲使用TT文件)。 –

回答

1

我建議你看看使用TT模板。然後,簡單的解決方案是有一個App.tt文件,其中包含一個通用的ttinclude文件。這將根據您可能想要在app.config中設置的其他設置生成具有相同(或不同)內容的App.config文件。

例如,我們有一個看起來像這樣的一個app.config:

<# EnvironmentName = "local"; #> 
<#@ include file="App.Template.ttinclude" #> 

的App.Template.ttinclude包含我們要輸出的一切(連同更改基於對環境的價值,因爲我們一些設置支持8個安裝環境

每個App.Template.ttinclude實際上包含另一個主配置文件,其中包含我們的通用設置,但由於我們在主配置文件中包含特定於環境的配置,因此開始變得複雜, (以解決TT文件處理中的錯誤)

如果我們有一個應用程序特定的DLL配置,它只是包括我們其中一個:

例如, MyApp.Exe.config包含:

<#@ include file="App.tt" #>