Вопрос по c# – Доступ к файлам .config в Roslyn REPL

7

С использованиемРослин июнь 2012 ОСАГО:

Есть ли способ предоставить Roslyn C # Interactive / REPL файл .config для исследуемого кода? Простым примером сценария является код, который зависит от строки подключения, которую он обычно получает из app.config / web.config.

Ваш Ответ

3   ответа
1

основываясь на комментариях к принятому ответу, он не работает и для 2 других. Ниже решение работало для меня.

Update the config file of c# interactive (REPL) which is located at

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

Re-initialize REPL.

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 # Интерактив из проекта». После завершения загрузки интерактивного окна C #:

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

ПРИМЕЧАНИЕ. Вы должны вызывать это сразу после загрузки проекта. Если какой-либо поиск конфигурации произойдет до того, как вы загрузите этот скрипт, этот скрипт не будет работать.

Теперь интерактивное окно C # должно иметь доступ к настройкам вашего проекта.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
4

В то же время, не могли бы вы добавить в свой код строку соединения в качестве параметра и просто передать ее в метод в интерактивном окне?

Error: User Rate Limit Exceeded Stuart
Error: User Rate Limit Exceeded

Похожие вопросы