从C#交互窗口访问配置文件

9

我正在尝试在VS2015的C#交互窗口中运行一些代码,该代码使用存储在我使用#r函数引用的dll的app.config文件中的连接字符串。

如果我查看ConfigurationManager,其中有一个连接字符串,但它是另一个配置文件中必须引用的不同字符串。


2
ConfigurationManager 访问正在执行的程序集的 app.config。始终将应用程序访问的连接字符串添加到正在执行的程序集的 app.config 中。 - Marshal
1个回答

1
如果您想显式加载特定程序集的配置并显式访问它,可以使用 ConfigurationManager类 OpenExeConfiguration方法
以具有此test.dll.config配置文件的test.dll程序集为例:
<configuration>
  <connectionStrings>
    <add
       name="MyConnectionString"
       connectionString="my connection string"
       providerName="System.Data.SqlClient"
   />
  </connectionStrings>
</configuration>

您可以像这样加载配置文件:

> #r "c:\temp\test.dll"
> #r "System.Configuration"
> using System.Configuration;
> ConfigurationManager.OpenExeConfiguration(@"c:\temp\test.dll").ConnectionStrings.ConnectionStrings["MyConnectionString"].ConnectionString
"my connection string"

这会获取配置细节,但它不会将其与我所调用的代码引用的配置设置合并。我需要将配置设置与执行程序集的设置合并,或者我需要编辑Roslyn正在使用的配置文件。不确定那在哪里... - Jon Mitchell
"Roslyn"与此无关。"Roslyn"是编译器,而配置加载是运行时功能。 - Paulo Morgado
这就是为什么我明确地说了。你可以尝试将该文件中的配置注入到已加载的配置System.Configuration.ConfigurationManager.GetSection("yoursection")中。但如果该配置是只读的,那么这种方法将行不通。或者你可以获取csi.exe和csi.exe.config,并将你的配置添加到其中。 - Paulo Morgado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接