在 C# 中,我如何处理 XmlException: 'xdt' 是未声明的前缀。当尝试在连接字符串中设置新密码时?

gri*_*arp 4 c# configuration winforms

我正在尝试在 app.config 文件中设置新密码。我尝试使用下面的代码来做到这一点。由于连接字符串中的 xdt:Transform,此处引发异常:

configuration.ConnectionStrings.ConnectionStrings["DbContext"].ConnectionString 
= string.Format("Data Source=x ;Initial Catalog=x ;User='sa';Password='{0}';", 
textBox1.Text);
Run Code Online (Sandbox Code Playgroud)

原因:“System.Configuration.ConfigurationErrorsException:''xdt'是未声明的前缀。”

这是一个转换后的配置文件,因此包含“xdt:Transform”

这是我要更改的连接字符串:

  <connectionStrings>
  <add name="DbContext" connectionString="Data Source=x;Initial 
  Catalog=x;User='sa';Password='x';"
     xdt:Transform="Replace" xdt:Locator="Match(name)"/>
  </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

是否有可能以某种方式解析 xml 文件的 connectionString 部分?先感谢您!

Vin*_*535 5

应定义 xdt 命名空间。在 web.release.config 文件 (*) 中,这样做是这样的:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <!--
    in the example below, the "SetAttributes" transform will change the value of a connectionstring
    -->
  <connectionStrings>
    <add name="MyConnectionString" connectionString="some value" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
  </connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

*)我必须承认这些转换通常用于 web.config 文件而不是 app.config 文件。不过,也可以对 app.config 执行此操作,但这是另一个主题。