Codedom でコンパイルされたコードをデバッグ/ブレークする方法 質問する

Codedom でコンパイルされたコードをデバッグ/ブレークする方法 質問する

C# ソース ファイルを動的に読み込み、プラグインとして実行するアプリケーションがあります。メイン アプリケーションをデバッグ モードで実行しているときに、動的アセンブリにデバッグすることは可能ですか? ソースは元のプロジェクトの一部ではないため、ブレークポイントの設定には問題がありますが、コードの例外でステップ インまたはブレークすることは可能でしょうか?

codedom にこれ用の PDB を生成させる方法などはありますか?

以下は動的コンパイルに使用しているコードです。

CSharpCodeProvider codeProvider = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
//codeProvider.
ICodeCompiler icc = codeProvider.CreateCompiler();

CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = true;
parameters.CompilerOptions = string.Format("/lib:\"{0}\"", Application.StartupPath);
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Core.dll");


CompilerResults results = icc.CompileAssemblyFromSource(parameters, Source);
DLL.CreateInstance(t.FullName, false, BindingFlags.Default, null, new object[] { engine }, null, null);

ベストアンサー1

次のオプションを試してください。

parameters.GenerateInMemory = false; //default
parameters.TempFiles = new TempFileCollection(Environment.GetEnvironmentVariable("TEMP"), true);
parameters.IncludeDebugInformation = true;

これがあなたのケースで問題なく機能するかどうかはわかりませんが、機能する場合は、このパラメータを条件付きコンパイル ディレクティブで囲むことで、生成されたアセンブリをデバッグ モードでのみダンプすることができます。

おすすめ記事