读取并替换存储在 C# 中不同项目位置的 web.config 中特定标签的值
Read and replace Values of a particular tag in web.config stored at a different project locations in C#
我需要编写一个程序,我可以在其中替换给定 config.xml.
中多个项目位置的 web.config 文件的特定标签的值
config.xml
<?xml version="1.0" encoding="utf-8" ?>
<ReplaceFile>
<File>
<tag>connectionStrings</tag>
<FilePath>C:\Users\abc\Documents\Visual Studio2013\Projects\WebApplication1\WebApplication1\web.config</FilePath>
<Repstring>"some string "</Repstring>
</File>
<File>
<tag>connectionStrings</tag>
<FilePath>C:\Users\abc\Documents\Visual Studio 2013\Projects\WebApplication2\WebApplication2\web.config</FilePath>
<Repstring>" some string "</Repstring>
</File>
</ReplaceFile>
Web.config
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="FEConnectionString" connectionString="Provider=xyz;Data Source=xyz;User id=xyz;Password=xyz" providerName="xyz"/>
</connectionStrings>
</configuration>
所以我的任务是检查 config.xml 的所有 web.config 文件并搜索 connectionStrings 节点并在节点下的 connectionstring 替换 connectionstring。
我是 C# 新手。
我的代码
static void UpdateXML()
{
XElement xdoc = XElement.Load("C:\Users\abc\Desktop\Config.xml");
IEnumerable<XElement> config = xdoc.Elements();
foreach (var file in config)
{
string tagname = file.Element("tag").Value;
string FilePath = file.Element("FilePath").Value;
string Repstring = file.Element("Repstring").Value;
//Console.WriteLine(tagname);
//Console.WriteLine(FilePath);
//Console.WriteLine(Repstring);
XElement xwebconfig = XElement.Load(FilePath);
IEnumerable<XElement> webconfig1 = xwebconfig.Elements();
foreach (var node in webconfig1)
{
Console.WriteLine(node);
}
}
}
据我了解,ConfigurationManager 特定于该特定项目,因此我无法使用该命名空间。
感谢任何形式的帮助。
这里有两种方法可以更新 web.config
文件中的 connectionStrings
。
第一种方法
XDocument xwebconfig = XDocument.Load(FilePath);
XElement xElement = xwebconfig.Elements("configuration").Elements("connectionStrings").Elements("add").FirstOrDefault();
xElement.SetAttributeValue("name", "myconnection");
xwebconfig.Save(FilePath);
第二种方法
XDocument xwebconfig = XDocument.Load(@"C:\Users\Administrator\Desktop\Web.config");
IEnumerable<XElement> webconfig1 = xwebconfig.Elements();
foreach (var node in webconfig1)
{
foreach (var subnode1 in node.Elements())
{
if(subnode1.Name == "connectionStrings")
{
foreach (var subnode2 in subnode1.Elements())
{
subnode2.SetAttributeValue("name", "myconnection");
}
}
}
}
xwebconfig.Save(@"C:\Users\Administrator\Desktop\Web.config");
我需要编写一个程序,我可以在其中替换给定 config.xml.
中多个项目位置的 web.config 文件的特定标签的值config.xml
<?xml version="1.0" encoding="utf-8" ?>
<ReplaceFile>
<File>
<tag>connectionStrings</tag>
<FilePath>C:\Users\abc\Documents\Visual Studio2013\Projects\WebApplication1\WebApplication1\web.config</FilePath>
<Repstring>"some string "</Repstring>
</File>
<File>
<tag>connectionStrings</tag>
<FilePath>C:\Users\abc\Documents\Visual Studio 2013\Projects\WebApplication2\WebApplication2\web.config</FilePath>
<Repstring>" some string "</Repstring>
</File>
</ReplaceFile>
Web.config
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="FEConnectionString" connectionString="Provider=xyz;Data Source=xyz;User id=xyz;Password=xyz" providerName="xyz"/>
</connectionStrings>
</configuration>
所以我的任务是检查 config.xml 的所有 web.config 文件并搜索 connectionStrings 节点并在节点下的 connectionstring 替换 connectionstring。 我是 C# 新手。
我的代码
static void UpdateXML()
{
XElement xdoc = XElement.Load("C:\Users\abc\Desktop\Config.xml");
IEnumerable<XElement> config = xdoc.Elements();
foreach (var file in config)
{
string tagname = file.Element("tag").Value;
string FilePath = file.Element("FilePath").Value;
string Repstring = file.Element("Repstring").Value;
//Console.WriteLine(tagname);
//Console.WriteLine(FilePath);
//Console.WriteLine(Repstring);
XElement xwebconfig = XElement.Load(FilePath);
IEnumerable<XElement> webconfig1 = xwebconfig.Elements();
foreach (var node in webconfig1)
{
Console.WriteLine(node);
}
}
}
据我了解,ConfigurationManager 特定于该特定项目,因此我无法使用该命名空间。
感谢任何形式的帮助。
这里有两种方法可以更新 web.config
文件中的 connectionStrings
。
第一种方法
XDocument xwebconfig = XDocument.Load(FilePath);
XElement xElement = xwebconfig.Elements("configuration").Elements("connectionStrings").Elements("add").FirstOrDefault();
xElement.SetAttributeValue("name", "myconnection");
xwebconfig.Save(FilePath);
第二种方法
XDocument xwebconfig = XDocument.Load(@"C:\Users\Administrator\Desktop\Web.config");
IEnumerable<XElement> webconfig1 = xwebconfig.Elements();
foreach (var node in webconfig1)
{
foreach (var subnode1 in node.Elements())
{
if(subnode1.Name == "connectionStrings")
{
foreach (var subnode2 in subnode1.Elements())
{
subnode2.SetAttributeValue("name", "myconnection");
}
}
}
}
xwebconfig.Save(@"C:\Users\Administrator\Desktop\Web.config");