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