0

現在、C# コードを CMD に入力して即座に実行できる C# コンソールを構築しています。このアプローチでは、Roslyn コンパイラを使用しています。これにより、すべてのコマンドでセッション オブジェクトにコードを追加できるため、つまり、最初のコマンドで何かを初期化し、2 番目のコマンドで使用できるようになります。

このコンソールでは、.NET フレームワーク全体にアクセスできるようにしたいので、すべての参照をコンソール プロジェクトに追加し、それらの参照を繰り返して Roslyn セッションに追加しようとしました。

Assembly assembly = Assembly.GetExecutingAssembly();
AssemblyName[] references = assembly.GetReferencedAssemblies().Where(x => !x.Name.StartsWith("Roslyn.")).ToArray();
ScriptEngine engine = new ScriptEngine();
Session session = engine.CreateSession();
foreach (AssemblyName reference in references)
{
    session.AddReference(reference.FullName);
}

残念ながら、コンソールが実際に使用している参照はわずかです。MSBuild コンパイラは非常に優れていると思いますが、ほとんどすべての参照がコンソールで使用されないことが検出されるため、それらはまったく含まれません。どうすればそれを取り除くことができますか?

.projファイルを解析して、このリストを個別に維持したくありません。

4

0 に答える 0