访问Roslyn REPL中的.config文件

时间:2012-06-06 00:50:32

标签: c# roslyn

使用Roslyn June 2012 CTP

有没有办法为正在探索的代码提供带有.config文件的Roslyn C#Interactive / REPL?一个简单的示例场景是代码,它依赖于通常从app.config / web.config获取的连接字符串。

3 个答案:

答案 0 :(得分:4)

现在没有办法做到这一点,尽管这是我们未来想到的事情。

与此同时,您是否可以将代码视为参数,并将其传递给交互式窗口中的方法?

答案 1 :(得分:3)

现在这实际上是可能的(可能是在问这个问题的时候)。只需使用以下命令创建LoadConfig.csx文件:

#r "System.Configuration"

using System;
using System.IO;
using System.Linq;


var paths = new[] { Path.Combine(Environment.CurrentDirectory, "Web.config"), Path.Combine(Environment.CurrentDirectory, "App.config") };
var configPath = paths.FirstOrDefault(p => File.Exists(p));

if (configPath != null)
{
    // Set new configuration path
    AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configPath);  

    // Reset current configuration load state
    var t = typeof(System.Configuration.ConfigurationManager);
    var f = t.GetField("s_initState", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
    f.SetValue(null, 0);
}

将文件保存到您将记住的某个位置并返回到要在Visual Studio中加载的项目。右键单击该项目,然后选择“从项目重置C#Interactive”。一旦C#交互式窗口完成加载调用:

#load "C:\path\to\LoadConfig.csx"

注意:您必须在加载项目后立即调用此方法。如果在加载此脚本之前发生任何配置查找,则此脚本将无法工作。

现在,C#Interactive窗口应该可以访问您的项目设置。

答案 2 :(得分:1)

已经接受的答案对我没有用;根据对已接受答案的评论,它也不适用于其他2个人。以下解决方案对我有用。

  1. 更新位于

    的c#interactive(REPL)的配置文件

    {{1}}

  2. 重新初始化REPL。