私は、WinFormsダイアログを表示してVSのコードエディタウィンドウに挿入される文字列を返すVisual Studio Extension(VSIXパッケージ)を持っています。参照されたコードがVisual Studio Extensionで実行されない
WinFormが正常に読み込まれます。私はハードコーディングされた文字列を返すことができ、VSはそれをエディタに置きます。しかし、WinFormがサードパーティ製のライブラリ(.Net Coreクラスライブラリ)を呼び出すと、例外がなくても実行を停止します。例外は表示されず、フォームが閉じられます。さらにテストするために、私は参照されたライブラリを単純にハードコードされた文字列を返すようにしたので、そのコードにExceptionのリスクはなく、失敗しました(これはライブラリを呼び出すアクションだと私に信じさせます。デバッガでは、参照されたライブラリに呼び出されるプロシージャは実行されません。その行をコメントアウトすると、そのプロシージャを実行します)。フォームを取り出してWinFormsアプリケーションに入れると、期待通りに実行されます。
参照されたライブラリは、ローカルNuGetフィード経由でエクステンションにロードされました。
- サードパーティのライブラリには現在署名されていません。 の問題がありますか?
- サードパーティライブラリは「クラスライブラリ(.Net Core)」です。伝統的なクラスライブラリ(これは.Net 4.6をターゲットにしていますが)のように、GUIを介してライブラリに署名するオプションはありません。 WinForm自体は、それが別の解決策であればそれを呼び出すことができます。これは、VS拡張機能を実行するときに禁止します。
- ほかにこの問題が発生する可能性がありますか?
サイドノート、これは自分自身の拡張であり、一般的な配布ではありません。
Visual Studioでは署名が気にしませんが、余分なDLLを出荷している場合は、VSにそのDLLが見つかる場所を教えてください。それに署名することによって、ローダーで何かが変更された可能性があります。物を明示的にするには、ProvideCodebaseAttributeを使用する必要があります。 –
それは面白いです、私は明日それをテストします。追加情報をありがとう。 –