我有一個web部署項目,使用外部文件執行web.config部分替換。 (這是爲了改變連接字符串部分)。 當手動構建時,web.config部分替換工作正常,但是當作爲TFS構建的一部分構建時,部分不會被替換。我在構建日誌中找不到任何錯誤或警告。web.config文件部分替換
有什麼可能的原因,或者我該如何「調試」呢?
我有一個web部署項目,使用外部文件執行web.config部分替換。 (這是爲了改變連接字符串部分)。 當手動構建時,web.config部分替換工作正常,但是當作爲TFS構建的一部分構建時,部分不會被替換。我在構建日誌中找不到任何錯誤或警告。web.config文件部分替換
有什麼可能的原因,或者我該如何「調試」呢?
我不確定這會有所幫助....但這是一種添加/更新連接字符串而不必替換整個配置節的方法。
public static void SaveConfigVal(string connectionString, string connName)
{
System.Configuration.ExeConfigurationFileMap fileMap = new System.Configuration.ExeConfigurationFileMap();
fileMap.ExeConfigFilename = GetConfigFileName();
//System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
// Retrieve the section group
ConnectionStringSettings keyValue = config.ConnectionStrings.ConnectionStrings[connName];
// If the key already exists, just replace
if (keyValue != null)
{
keyValue.ConnectionString = connectionString;
}
else
{
// Add a new key if the setting doesn't exist
config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings(connName, connectionString));
}
config.Save(ConfigurationSaveMode.Modified);// (ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("ConnectionStrings");
}
private static string GetConfigFileName()
{
//return config file name....
}
你有沒有考慮過使用Web.Config的能力來從一個單獨的文件拉節?你指的是外部文件,像這樣(這是我的裝載有我的連接字符串部分文件代碼):
<connectionStrings configSource="WebCS.config"/>
然後連接字符串可以部署爲一個單獨的文件:
<connectionStrings>
<add name="ConnString" connectionString="Data Source=<server>;Initial Catalog=<DB>;User ID=<ID>;Password=<pwd>" providerName="System.Data.SqlClient"/>
</connectionStrings>
這樣,您根本不必擔心更改web.config文件。
如果您正在使用或可以升級到Visual Studio 2010,則可以使用新的web.config轉換根據所選配置更改web.config。
您如何將其與構建或Web部署集成? – simon831 2009-05-29 10:02:57