2010-09-08 47 views
0

我必須實現將放入GAC的.net程序集。它依賴於RDBMS連接字符串和一些額外的參數 - 我應該放哪個最好的地方? Machine.config,註冊表或更合適的東西?配置GAC放置的組件。最佳實踐

這樣的信息應該放在使用組件的應用程序配置文件(app.config/web.config)中(如注意Marek Grzenkowicz),但是如果應用程序配置由於某些原因不可接觸會怎麼樣?

預先感謝您!

+0

投票結束:您提出的一個問題是,無法使用正常(最佳)解決方案的主要信息,而沒有任何進一步的信息或要求。 – 2010-09-08 17:13:35

+0

[如何許可在C#中開發的應用程序]的可能重複(http://stackoverflow.com/questions/3331314/how-to-license-an-application-developed-in-c) – 2010-09-08 17:13:49

+0

是的,這是異常情況。 – 2010-09-08 17:21:54

回答

3

您應該將這些信息放入使用程序集的應用程序文件app.config/web.config中。這樣就可以爲每個這樣的應用程序指定不同的設置。

+0

是的,那是真的。我忘了提及應用程序配置不可編輯的原因:( – 2010-09-08 14:32:33

+1

@Andrew Florko:將此信息添加到原始問題,並解釋你的意思* app.config是不可編輯*。是否是一個要求?您是否擁有適當的權限?app.config文件是否屬於某個第三方應用程序? – 2010-09-08 14:37:43

+1

這是一個應用程序組件,我們沒有管理訪問權限來更改配置。我應該聯繫管理員並要求爲我們做一些更改 - 可能是更改其寶貴的應用程序配置然後要求他們更改machine.config或運行註冊表修改腳本。 – 2010-09-08 17:05:06

2

我想這將取決於你如何參與依賴程序集管理設置。

註冊管理機構可以很好地滿足設定一次不要再考慮它的方法。使用註冊表的缺點是缺少對ADO.NET類中的連接字符串進行檢索的內置支持。

通過在應用程序的app.config或web.config中要求設置,可能會更好地滿足這種可能不同於每個應用程序的方法。配置文件提供了許多與ADO.NET相關的類的內置連接字符串支持的附加好處。

我總是有點修改machine.config的警惕。我無法解釋爲什麼,除了設置是全球性的。 machine.config中使用的每個連接字符串名稱都是傳播到其他配置的名稱,必須使用,忽略或刪除。這也使開發環境與生產同步變得複雜。這就是說,我不認爲這些原因是超級有說服力的理由來避免machine.config。在作出決定之前,權衡權衡。

孤立存儲中的自定義文件是另一個可行的選擇,雖然它通常用於有限的信任環境;由於GAC是完全信任的,因此隔離存儲可能不是一個有吸引力的選項。

1

使用特定數據庫的'組件'可能不應該放在GAC中。

如果您真的需要這個,那麼Connectionstring不是正常意義上的配置。你可能應該把它硬編碼到你的程序集中。

請提醒我永遠不要安裝您的軟件。

+0

好評! :)我編寫的應用程序使用GAC安裝的組件作爲外部插件,完全由註冊表(!)中描述的[assembly + class name]指定。 – 2010-09-08 17:20:08