【问题标题】:Accessing config file from c# interactive window从 c# 交互式窗口访问配置文件
【发布时间】:2015-12-23 17:42:29
【问题描述】:

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

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

【问题讨论】:

  • ConfigurationManager 访问执行程序集的app.config。始终将您的应用程序访问的连接字符串添加到执行程序集的 app.config。

标签: c# visual-studio-2015 roslyn c#-interactive


【解决方案1】:

如果您想要显式加载特定程序集的配置并显式访问它,您可以使用ConfigurationManager classOpenExeConfiguration method

使用此 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 正在使用的配置文件。不知道那在哪里……
  • “罗斯林”与此无关。 “Roslyn”是编译器,配置加载是运行时特性。
  • 这就是我明确表示的原因。您可以尝试将该文件中的配置注入到加载的配置System.Configuration.ConfigurationManager.GetSection("yoursection")。但如果该配置是只读的,那将不起作用。或者您可以获取 csi.exe 和 csi.exe.config 并将您的配置添加到其中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
相关资源
最近更新 更多