Изменение значений в Web.config с помощью пакетного файла или в коде .NET - PullRequest
4 голосов
/ 19 марта 2009

У меня на компьютере есть файл web.config.

Есть много вещей, которые мне нужно изменить и добавить в файл. (на самом деле я работаю с моим файлом web.config SharePoint)

Могу ли я сделать это с помощью пакетного файла, если да, то как мне это сделать. Или как мне это сделать, используя код VB.NET или C #?

Есть идеи, ребята?

Редактировать: мне нужно создать программу для изменения web.config, скажем, я web.config лежал на моем десктопе, а не фактический web.config моего проекта

С уважением Etienne

Ответы [ 7 ]

4 голосов
/ 19 марта 2009

Вы можете изменить его из кода C #, например:

Configuration configuration = WebConfigurationManager.OpenWebConfiguration("~");     
AppSettingsSection appSettingsSection = (AppSettingsSection)configuration.GetSection("appSettings"); 

if (appSettingsSection != null) 
{
  appSettingsSection.Settings["foo"].Value = "bar"; 
  config.Save();
}

где foo - это ключ и, очевидно, значение ключа, которое нужно установить. Чтобы удалить значение, используйте Settings.Remove (ключ);

См. Документацию msdn для получения дополнительной информации о методе OpenWebConfiguration и других.

3 голосов
/ 19 марта 2009

Контекст, в котором вы хотите изменить файл, действительно влияет на то, как вы должны это сделать. Если вы смотрите на внесение изменений относительно часто, но в административном домене, то какой-то инструмент командной строки имеет смысл, и в этом случае я бы согласился с JaredPar, что PowerShell будет полезным инструмент.

Если, с другой стороны, вы оказались в ситуации, когда вам нужно изменить web.config в более программной среде (например, как часть программы установки), то использование программных технологий может иметь больше смысла. Мне недавно пришлось сделать такую ​​вещь, и Linq to Xml оказался очень удобным.

Например, чтобы открыть документ «C: \ foo \ bar.xml», вы можете сделать что-то вроде (не проверено, в данный момент нет удобной среды сборки):

XDocument config = XDocument.Load(@"C:\foo\bar.xml");

Затем можно продолжить обычным способом с помощью API . Обратите внимание, что это может быть излишним, если вы выполняете административную задачу, а не программную задачу - есть большие долгосрочные преимущества в изучении такого инструмента, как PowerShell.

Наконец, если вы изменяете web.config из программы, для которой используется web.config, и вы не делаете ничего необычного или динамичного, то используйте встроенный Settings или ConfigurationManager может быть путь.

1 голос
/ 20 марта 2009

Для загрузки произвольного файла конфигурации .NET

string configLocation = @"C:\myconfigFile.Config";
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();


configFileName = configLocation;
configFileMap.ExeConfigFilename = configFileName;

Configuration configuration= ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);

Затем используйте код Раззи , чтобы изменить фактическую настройку конфигурации

AppSettingsSection appSettingsSection = (AppSettingsSection)configuration.GetSection("appSettings"); 
if (appSettingsSection != null) 
{  
    appSettingsSection.Settings["foo"].Value = "bar";   
    configuration.Save();
}
1 голос
/ 19 марта 2009

Для изменения файла web.config в среде SharePoint у вас есть классы, специально разработанные для этой задачи. Вам нужно только найти SPWebConfigModification class .

1 голос
/ 19 марта 2009

Я бы лично рекомендовал использовать PowerShell. Это командная строка следующего поколения от Microsoft, расположенная прямо над .Net. Он был создан для таких элементов, как пакетное редактирование больших наборов файлов.

1 голос
/ 19 марта 2009

Лучше всего изменить его, используя скрипт MSBuild и Задачи сообщества MsBuild Массовое обновление XML

0 голосов
/ 20 марта 2009

Это то, что мне нужно было сделать ....... спасибо за помощь !!!

// Read in Xml-file 
        XmlDocument doc = new XmlDocument();
        doc.Load("C:/Web.config");

        //SaveControl tag..........................................................
        XmlNode n = doc.SelectSingleNode("/configuration/SharePoint/SafeControls");

        XmlElement elemWeb = doc.CreateElement("SafeControl");
        elemWeb.SetAttribute("Assembly", "SamrasWebOption4");
        elemWeb.SetAttribute("Namespace", "SamrasWebOption4");
        elemWeb.SetAttribute("TypeName", "*");
        elemWeb.SetAttribute("Safe", "True");

        XmlElement elemSmartPart = doc.CreateElement("SafeControl");
        elemSmartPart.SetAttribute("Assembly", "Machine_Totals");
        elemSmartPart.SetAttribute("Namespace", "Machine_Totals");
        elemSmartPart.SetAttribute("TypeName", "*");
        elemSmartPart.SetAttribute("Safe", "True");

        //Appending the Nodes......................................................
        n.AppendChild(elemWeb);
        n.AppendChild(elemSmartPart);

        //Saving the document......................................................
        doc.Save("C:/Web.config");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...