2010-11-10 195 views
0

我有一個需要某些配置才能運行的類庫。這個類庫被多個應用程序引用(多個ASP.Net網站和Windows窗體應用程序).Net共享類庫配置

我的理解是,可以將配置存儲在庫的app.config => myDll.dll.config文件中。見:Putting configuration information in a DLLC# Dll config file

我的問題是,我不想手動處理複製配置文件到每個主機程序集的bin文件夾。 .Net中是否有一種機制來處理dll與其配置文件的配對,以便隨附的配置與dll一起復制,無論它是分佈式還是引用?

回答

1

如果配置對您的DLL的所有實例是相同的,那麼我將其添加爲嵌入的資源,所以它是你的DLL的一部分,而不是一個單獨的文件都沒有。

要做到這一點,無論是將其添加爲一個文件資源,您Resources.resx文件,或者乾脆直接添加文件到您的項目,然後設置其編譯類型(在屬性窗口),以嵌入的資源。

然後,您可以使用Assembly.GetExecutingAssembly.GetManifestResourceNames()列出dll中的資源名稱,並使用Assembly.GetExecutingAssembly.GetManifestResourceStream()來獲取流以從中讀取文件數據。我可能會爲我的數據使用簡單的自制XML格式,然後使用XmlTextReader/XmlDocument輕鬆地讀取它。

+0

謝謝,這將工作;但是,如果需要對配置進行更改,則必須編譯和分發新的dll。 – Null 2010-11-10 19:31:45

+0

@null:一個選項:而不是從資源只是閱讀,首先檢查是否有在Application.StartupPath一個配置文件 - 打開,作爲優先於一個嵌入在你的資源的輸入流。如果文件丟失,則回退到資源。這樣,默認值就可以完整地嵌入到dll中,但用戶可以稍後添加文件以覆蓋設置(如果需要的話)。 – 2010-11-12 19:49:16

+0

看一看這個庫,它簡化了配置的瘋狂https://github.com/aloneguid/config – 2015-09-29 23:44:30

0

您必須將此.dll部署到GAC中,並在其中放置配置文件應用程序首先會在查找引用時搜索GAC。 Here是你如何部署dll + config。