c# - necesaria - sharepoint development
Cambiar valores en Web.config con un archivo por lotes o en un código.NET (7)
Tengo un archivo web.config en mi computadora.
Hay muchas cosas que necesito cambiar y agregar en el archivo. (En realidad estoy trabajando con mi archivo web.config de SharePoint)
¿Puedo hacer esto con un archivo por lotes? Si es así, ¿cómo lo haría? ¿O cómo lo haría usando el código VB.NET o C #?
Alguna idea chicos?
Editar: necesito crear un programa para modificar un web.config de digamos i web.config poniendo en mi escritorio y no el web.config real de mi proyecto
Saludos Etienne
Para un cambio en web.config en un entorno de SharePoint, tiene clases especialmente desarrolladas para esta tarea. Solo tiene que buscar la clase SPWebConfigModification .
Puede modificarlo desde el código C #, por ejemplo:
Configuration configuration = WebConfigurationManager.OpenWebConfiguration("~");
AppSettingsSection appSettingsSection = (AppSettingsSection)configuration.GetSection("appSettings");
if (appSettingsSection != null)
{
appSettingsSection.Settings["foo"].Value = "bar";
config.Save();
}
donde foo es la clave y barra el valor de la clave para establecer, obviamente. Para eliminar un valor, use Settings.Remove (clave);
Consulte la documentación de msdn para obtener más información sobre el método OpenWebConfiguration y más.
Su mejor opción podría cambiarlo utilizando una secuencia de comandos MSBuild Script y MsBuild Community Tasks XML Mass update
Yo personalmente recomendaría usar PowerShell. Esta es la próxima línea de comando de gen de Microsoft y se encuentra justo encima de .Net. Fue creado para hacer elementos como ediciones por lotes en grandes conjuntos de archivos.
El contexto en el que desea cambiar el archivo realmente afecta cómo debe hacerlo. Si está considerando realizar cambios con relativa frecuencia, pero en un dominio administrativo, entonces algún tipo de herramienta de línea de comandos tiene sentido, y en este caso estaría de acuerdo con JaredPar en que PowerShell sería una herramienta valiosa.
Si, por otro lado, se encuentra en una situación en la que necesita modificar el web.config en un entorno más programático (por ejemplo, como parte de un programa de instalación), entonces el uso de tecnologías programáticas podría tener más sentido. Recientemente tuve que hacer tal cosa y Linq to Xml demostró ser muy conveniente.
Por ejemplo, para abrir un documento "C: / foo / bar.xml", podría hacer algo como (sin probar, sin un entorno de compilación conveniente en este momento):
XDocument config = XDocument.Load(@"C:/foo/bar.xml");
A continuación, podría continuar de la manera habitual con la API . Tenga en cuenta que esto puede ser excesivo si está realizando una tarea administrativa en lugar de una tarea programática; existen ventajas a largo plazo para aprender una herramienta como PowerShell.
Finalmente, si está modificando el archivo web.config dentro del programa para el que se utiliza el archivo web.config, y no está haciendo nada demasiado sofisticado o dinámico, entonces el uso de las Settings
integradas o ConfigurationManager
puede ser el camino ir.
Esto es lo que necesitaba hacer ... ¡gracias por toda la ayuda!
// 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");
Para cargar un archivo de configuración de .NET arbitrario
string configLocation = @"C:/myconfigFile.Config";
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
configFileName = configLocation;
configFileMap.ExeConfigFilename = configFileName;
Configuration configuration= ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
Luego usa el código de Razzie para alterar la configuración de configuración real
AppSettingsSection appSettingsSection = (AppSettingsSection)configuration.GetSection("appSettings");
if (appSettingsSection != null)
{
appSettingsSection.Settings["foo"].Value = "bar";
configuration.Save();
}