У меня есть приложение, которое динамически загружает исходные файлы C# и запускает их как плагины. Когда я запускаю основное приложение в режиме отладки, можно ли отлаживать динамическую сборку? Очевидно, что установка контрольных точек является проблематичной, поскольку источник не является частью исходного проекта, но должен ли я иметь возможность входить или исключать исключения для кода?Как отлаживать/прерывать код, скомпилированный код
Есть ли способ получить кодовое средство для создания 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);
Из любопытства (я никогда не испортил вещи CodeDom), что произойдет, если вы попытаетесь поместить System.Diagnostics.Debugger.Break(); где-то в вашем коде? Можете ли вы тогда войти в нее? – BFree
это сработало, но только с вариантами в принятом ответе. –
Я продублировал этот вопрос за недоразумение (кододом не был тем ключом, который я искал). http://stackoverflow.com/questions/1593920/debugging-a-generated-net-assembly-from-within-the-application-that-generated-it/1594910#1594910. Я добавил решение с интерфейсом. Надеюсь, это поможет ... – jdehaan