Invoke
という小さなC#ライブラリプロトタイプを作成しました。node.js経由で電子エッジアプリケーションにVisual Studioデバッガを接続
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#dllからアプリケーションに正常に渡されていることを確認しました。 (つまり、C#コードとJavaScriptが一緒に動作していると思います)
これはより複雑なシステムのプロトタイプですので、Visual Studioデバッガをノード?)プロセスで、C#dll用のデバッグシンボルファイルをロードして、Edge.jsドキュメント(the github page hereを参照)に従ってC#dllをステップ実行させてください。私はC#dllと.pdbファイルを電子アプリケーションディレクトリにコピーしました。
私はVisual StudioのC#クラスにブレークポイントを設定し、デバッガを "Managed" node.exeプロセスにアタッチするようになりました。私が気づいた最初のことは、2つのnode.exeプロセスが実行されていて、どちらもドキュメンテーションに記載されている「管理」の説明がなかったことです。
私は最初に1つ、次にもう1つは接続しようとしましたが、C#dll関数のedge.js呼び出しの後にブレークポイントを取得できませんでした。私はデバッグ - > Windows - >モジュールをチェックし、モジュールが実際にロードされていないことを確認しました。私はデバッガを電子プロセス(「Managed」という記述があります)に添付して、C#dllにDebug> Windows-> Modulesページのシンボルが突然表示されました。ああ、私のブレークポイントはまだヒットしていませんでした。
Visual Studioでデバッガを実際にノード/電子アプリケーションに接続し、関連付けられたC#DLLで詳細なデバッグを可能にする方法があれば誰にも分かりますか?