2009-03-19 5 views
4

J'ai un fichier web.config sur mon ordinateur.Modification de valeurs dans Web.config avec un fichier Batch ou dans le code .NET

Il y a beaucoup de choses que je dois changer et ajouter dans le fichier. (je travaille en fait avec mon dossier SharePoint web.config)

pouvez le faire i avec un fichier batch, si oui, comment pourrais-je le faire. Ou comment le ferais-je en utilisant le code VB.NET ou C#?

Des idées les gars?

Edit: Je dois créer un programme pour modifier un web.config Lets dire que je pose sur mon web.config deskop et non la web.config réelle de mon projet

Cordialement Etienne

Répondre

0

C'est ce que je devais faire ....... merci pour toute l'aide !!!

// 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"); 
1

votre meilleur pari pourrait changer à l'aide d'un script MSBuild et la tâche de mise à jour de masse MsBuild Community Tasks XML

4

Vous pouvez le modifier à partir du code C#, par exemple:

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

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

où foo est la clé et barre la valeur de la clé à définir, évidemment. Pour supprimer une valeur, utilisez Settings.Remove (key);

Voir le msdn documentation pour plus d'informations sur la méthode OpenWebConfiguration et plus encore.

+0

merci, mais je dois créer un programme pour modifier un web.config Lets dire que je pose sur mon web.config deskop et non la web.config réelle de mon projet .... comment pourrais-je faire ce? – Etienne

1

Je vous recommande personnellement d'utiliser PowerShell. Ceci est la prochaine ligne de commande de gen de Microsoft et il se trouve juste au-dessus de .Net. Il a été conçu pour effectuer des modifications telles que des modifications groupées sur de grands ensembles de fichiers.

1

Pour une modification de web.config dans un environnement SharePoint, vous disposez de classes spécialement développées pour cette tâche. Vous avez seulement à chercher SPWebConfigModification class.

3

Le contexte dans lequel vous voulez changer le fichier affecte vraiment comment vous devriez le faire. Si vous cherchez à effectuer des changements assez fréquemment, mais dans un domaine administratif, alors une sorte d'outil de ligne de commande est logique, et dans ce cas je serais d'accord avec JaredPar que PowerShell serait un outil précieux. Si, d'un autre côté, vous vous trouvez dans une situation où vous devez modifier web.config dans un environnement plus programmatique (par exemple, dans le cadre d'un programme d'installation), l'utilisation de technologies programmatiques pourrait avoir plus de sens . J'ai récemment dû faire une telle chose et Linq to Xml s'est avéré très pratique.

Par exemple, pour ouvrir un document "C: \ foo \ bar.xml" vous pouvez faire quelque chose comme (non testé, aucun environnement de construction pratique pour le moment):

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

Vous pouvez ensuite continuer de la manière habituelle avec le API. Notez que cela peut être exagéré si vous effectuez une tâche administrative plutôt qu'une tâche programmatique - il y a de gros avantages à long terme pour l'apprentissage d'un outil tel que PowerShell.

Enfin, si vous modifiez le fichier web.config à partir du programme que le web.config est utilisé pour, et vous ne rien faire trop de fantaisie ou dynamique, puis en utilisant le haut-Settings ou ConfigurationManager peut être le chemin à parcourir.

+0

merci pour la réponse .... j'ai besoin de créer un programme pour modifier un web.config de disons un web.config portant sur mon deskop et pas le web.config réelle de mon projet – Etienne

+0

Powershell et linq seraient toujours parfaitement capable de cela. –

+0

Merci Greg, je vais essayer. – Etienne

1

Pour charger un fichier de configuration .NET arbitraire

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


configFileName = configLocation; 
configFileMap.ExeConfigFilename = configFileName; 

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

Ensuite, utilisez Razzie's code pour modifier la configuration réelle de réglage

AppSettingsSection appSettingsSection = (AppSettingsSection)configuration.GetSection("appSettings"); 
if (appSettingsSection != null) 
{ 
    appSettingsSection.Settings["foo"].Value = "bar"; 
    configuration.Save(); 
} 
+0

Salut, merci pour le répondre. Est-ce que configFileName est le nom de mon fichier de configuration ----- signifiant "Web.Config"? – Etienne

+0

Ouais, chemin complet. – Nat

Questions connexes