Я создал небольшой прототип библиотеки C#, который имеет функцию Invoke
.Прикрепить отладчик Visual Studio к электронному окну через node.js
public class TestClass
{
public async Task<object> Invoke(dynamic input)
{
Dictionary<Type, IReport> reports = new Dictionary<Type, IReport>
{
{typeof (LevelOne), new LevelOneReport()},
{typeof (LevelTwo), new LevelTwoReport()}
};
ILevel toTestLevel1 = new LevelOne(1);
ILevel toTestLevel2 = new LevelTwo(2);
IReport report = reports[toTestLevel2.GetType()];
return report.Generate(toTestLevel2);
}
}
Результат функции является новым объектом, который имеет в нем int
. Я подтвердил в своем приложении node/electron/edge.js, что данные успешно передаются из библиотеки C# в мое приложение. (т. е. код C# и JavaScript работают вместе, как я их ожидаю.)
Поскольку это прототип для более сложной системы, я хотел бы иметь возможность присоединить отладчик Visual Studio к узлу (или электрону ?), загрузите файл отладочных символов для библиотеки C# и позвольте мне пройти через мою C# dll в соответствии с документацией Edge.js (см. the github page here). Я скопировал файл C# dll и .pdb в каталог электронных приложений.
Итак, я установил точку останова в своем классе C# в Visual Studio, а затем отправился присоединять отладчик к процессу «Управляемый» node.exe. Первое, что я заметил, это то, что было выполнено два процесса node.exe, ни одно из которых не содержало описание «Управляемое», упомянутое в документации.
Я попытался установить сначала на один, а другой, но не смог получить, чтобы моя точка останова попала после моего вызова edge.js функции dll C#. Я проверил модули Debug-> Windows-> и увидел, что на самом деле модули не загружаются. Разочарованный, я приложил отладчик к электронному процессу (который имеет описание «Управляемый»), и моя C# dll внезапно появилась с символами, загруженными на страницу Debug-> Windows-> Modules! Увы, мой контрольный пункт все еще не попал.
Кто-нибудь знает, есть ли способ заставить отладчик в Visual Studio фактически подключиться к узловому/электронному приложению и разрешить детальную отладку в связанной DLL C#?