Текущий подход:
- Модули компилируются независимо (в настоящее время в рамках одного и того же решения).
- Библиотеки DLL и PDB модуля передаются в оболочку через API. >
- Приложение оболочки динамически загружает эти модули с использованием AssemblyLoadContext.Default.LoadFromStream(dllStream, pdbStream).
Мне нужно включить отладку динамически загружаемых модулей, когда отладчик подключен к процессу Blazor WebAssembly (оболочка) (в Docker). Разработчики модулей должны иметь возможность самостоятельно создавать свои модули, предоставлять библиотеки DLL/PDB для API, а затем отлаживать свой код, присоединяя его к работающей оболочке.
Среда:< /strong>
- .NET 9
- Blazor WebAssembly
- Rider ( Visual Studio ведет себя как Rider)
Вопрос:
Возможно ли вообще следующее? Что мне следует сделать по-другому, чтобы добиться работоспособной отладки?
Пример кода:
Код: Выделить всё
// AssemblyLoader.cs
public async Task[*]> LoadAdditionalAssemblies()
{
var dll = await _httpClient.GetAsync("Modules/ModuleExample/ModuleExample.dll");
var pdb = await _httpClient.GetAsync("Modules/ModuleExample/ModuleExample.pdb");
await using var dllStream = await dll.Content.ReadAsStreamAsync();
await using var pdbStream = await pdb.Content.ReadAsStreamAsync();
var assembly = AssemblyLoadContext.Default.LoadFromStream(dllStream, pdbStream);
return [assembly];
}
Проблема:
Отладка не работает должным образом. Когда я пытаюсь установить точку останова в коде модуля, IDE Rider отображает одно из следующих сообщений:
"/path/to/module/file.cs не найден среди загруженных документов символов"
[*]"Не найден связанный модуль для /path/to/module/file.cs"
Модуль не указан в Debug-Modules list, там только оболочка (в оболочке работает отладка).
Подробнее здесь: https://stackoverflow.com/questions/793 ... lazor-wasm