代码之家  ›  专栏  ›  技术社区  ›  simon831

web.config文件文件节替换

  •  0
  • simon831  · 技术社区  · 17 年前

    这个web.config文件节替换在手动构建时可以正常工作,但是当作为TFS构建的一部分构建时,该部分不会被替换。在生成日志中找不到任何错误或警告。

    可能的原因是什么,或者我如何“调试”它?

    3 回复  |  直到 17 年前
        1
  •  1
  •   Mark Brittingham    16 年前

    你考虑过使用吗网络配置从一个单独的文件中提取一个部分的能力?您是这样引用外部文件的(这是用于加载包含连接字符串部分的文件的代码):

    <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文件完全是文件。

        2
  •  0
  •   CSharpAtl    17 年前

    我不确定这是否有帮助…但这是一种添加/更新连接字符串而不必替换整个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....
            }
    
        3
  •  0
  •   Clay hemu    14 年前

    如果您正在使用或可以升级到VisualStudio2010,则可以利用新的web.config文件转换来改变web.config文件基于所选配置。

    http://msdn.microsoft.com/en-us/library/dd465318.aspx