Mam aplikację, która dynamicznie ładuje do góry pliki źródłowe C# i uruchamia je jako wtyczki. Kiedy uruchamiam główną aplikację w trybie debugowania, czy możliwe jest debugowanie w zespole dynamicznym? Oczywiście ustawienie pułapek jest problematyczne, ponieważ źródło nie jest częścią oryginalnego projektu, ale czy powinienem móc wkraczać lub łamać wyjątki dla kodu?Jak debugować/włamać się w skompilowanym kodeksie
Czy istnieje sposób na uzyskanie kodeksu do generowania PDB dla tego czy coś takiego?
Oto kod, którego używam do kompilacji dynamicznej.
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);
Z ciekawości (nigdy tak naprawdę nie robiłem rzeczy CodeDom), co się stanie, jeśli spróbujesz umieścić System.Diagnostics.Debugger.Break(); gdzieś w swoim kodzie? Czy możesz wejść do tego? – BFree
to działało, ale tylko z opcjami w zaakceptowanej odpowiedzi. –
Powieliłem to pytanie za nieuwagę (kod nie był kluczem, którego szukałem). http://stackoverflow.com/questions/1593920/debugging-a-generated-net-assembly-from-within-application-that-generated-it/1594910#1594910. Dodałem rozwiązanie obejmujące interfejs. Mam nadzieję, że to pomoże ... – jdehaan