我對ASP.net很陌生,所以我只是想清楚這一點。如何爲ASP.NET中的多個解決方案獲取多個重疊的配置文件?
首先,我有多個獨立的項目將託管在同一臺服務器上。
其次,它們必須能夠共享某些設置(如連接字符串,配置選項等)。第三,這些共享設置必須可以針對不同的部署(測試,產品等)進行配置。
例如,我有兩個項目: 項目A 項目B
我有一個名爲「設置1」,這應該是這兩個項目進入設置。
的「設置1」的值應該來自於這些文件中的一個: 「TEST-config.xml中」 「PROD-config.xml中」 (將會有兩個以上的配置文件,但我會繼續簡單現在)
而且我想只有一個地方改變單一的文本文件,它確定哪些* -config.xml文件將被使用:
「WhichSettingsFile.xml」
下面是一個文件結構的例子:
\ WhichSettingsFile.xml \ TEST-config.xml中 \ PROD-config.xml中 \ PROJECT1 \ Project1.csproj \ PROJECT1 \ web.config中 \ PROJECT1 ...(以上文件) \ Project2的\ Project2的.csproj的 \ Project2的\ web.config中 \ Project2的...(更多文件)
所以目前,每個項目都有的 「web.config」 是這樣的:
<appSettings file="..\WhichSettingsFile.xml">
...
</appSettings>
然後,我有一個文件「WhichSettingsFile.xml」是這樣的:
<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
<add key="SettingsFilenamePrefix" value="PROD" />
</appSettings>
我有這樣的代碼:
public static string GetSetting(name) {
string filename = System.Web.Configuration.WebConfigurationManager.AppSettings["SettingsFilenamePrefix"] + "-config.xml";
// Open filename, parse as XML, get the values I need from it.
}
這意味着我可以在服務器主機兩個項目,設置WhichSettingsFile.xml包含「PROD」,所有設置將被讀取「PROD-config.xml中」。我可以爲測試服務器做同樣的事情。所有這些價值觀都在不同的項目中分享。
但是,我需要能夠在文件系統上編輯這些文件,而不是將它們嵌入到dll /程序集中。當我運行從Visual Studio項目(S),內置asp.net託管服務器將文件部署到類似:
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\lskdjflskj\slkdjfsld\klsjdfwbe
但因爲它是嵌入不會有「WhichSettingsFile.xml」文件在組裝中。此外,「PROD-config.xml」和「TEST-config.xml」文件將不會被包含,因爲它們不是「代碼」的一部分,也不會被複制。
理想情況下,我想有這樣的部署文件夾:
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\Project1\(all the compiled files here)
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\Project2\(all the compiled files here)
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\WhichSettingsFile.xml
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\PROD-config.xml
C:\Users\[username]\AppData\Local\Temp\6\Temporary ASP.NET Files\abc123\TEST-config.xml
但我不知道如何做到這一點。
所以我的問題: - 「WhichSettingsFile.xml」嵌入到程序集中。我希望這是由應用程序在運行時引用的文件系統上的純文本文件。我意識到我可能需要避免使用這個。有沒有更好的辦法? - 我想擁有多個配置文件,也是文件系統上的純文本文件。
我知道我得到的是不工作,並可能令人費解。但有沒有更好的方法來做到這一點?謝謝!!
我認爲你要找的是VS.中的web.config轉換。但是,您需要使用Visual Studio 2010來執行此操作。 – 2011-03-30 17:32:29