7

Roslynの使用2012年6月CTP :

探索中のコードの.configファイルをRoslynC#Interactive / REPLに提供する方法はありますか?簡単なシナリオ例は、通常app.config/web.configから取得する接続文字列に依存するコードです。

4

3 に答える 3

4

将来的に考えていることですが、今のところこれを行う方法はありません。

それまでの間、コードを因数分解して接続文字列をパラメーターとして受け取り、それをインタラクティブウィンドウのメソッドに渡すことはできますか?

于 2012-06-06T00:58:09.923 に答える
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);
}

覚えやすい場所にファイルを保存し、VisualStudioにロードするプロジェクトに戻ります。プロジェクトを右クリックして、[プロジェクトからC#インタラクティブをリセット]を選択します。C#インタラクティブウィンドウの読み込みが完了すると、次のようになります。

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

注:プロジェクトをロードした直後にこれを呼び出す必要があります。このスクリプトをロードする前に構成ルックアップが発生すると、このスクリプトは機能しなくなります。

これで、C#インタラクティブウィンドウがプロジェクト設定にアクセスできるようになります。

于 2013-10-11T18:35:04.097 に答える
1

すでに受け入れられた答えは私にはうまくいきませんでした。受け入れられた回答へのコメントに基づくと、他の2人にも機能しませんでした。以下の解決策は私のために働いた。

  1. 次の場所にあるc#インタラクティブ(REPL)の構成ファイルを更新します。

    AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

  2. REPLを再初期化します。

于 2017-10-14T05:38:50.647 に答える