2016-08-31 18 views
0

私は、WinFormsダイアログを表示してVSのコードエディタウィンドウに挿入される文字列を返すVisual Studio Extension(VSIXパッケージ)を持っています。参照されたコードがVisual Studio Extensionで実行されない

WinFormが正常に読み込まれます。私はハードコーディングされた文字列を返すことができ、VSはそれをエディタに置きます。しかし、WinFormがサードパーティ製のライブラリ(.Net Coreクラスライブラリ)を呼び出すと、例外がなくても実行を停止します。例外は表示されず、フォームが閉じられます。さらにテストするために、私は参照されたライブラリを単純にハードコードされた文字列を返すようにしたので、そのコードにExceptionのリスクはなく、失敗しました(これはライブラリを呼び出すアクションだと私に信じさせます。デバッガでは、参照されたライブラリに呼び出されるプロシージャは実行されません。その行をコメントアウトすると、そのプロシージャを実行します)。フォームを取り出してWinFormsアプリケーションに入れると、期待通りに実行されます。

参照されたライブラリは、ローカルNuGetフィード経由でエクステンションにロードされました。

  1. サードパーティのライブラリには現在署名されていません。 の問題がありますか?
  2. サードパーティライブラリは「クラスライブラリ(.Net Core)」です。伝統的なクラスライブラリ(これは.Net 4.6をターゲットにしていますが)のように、GUIを介してライブラリに署名するオプションはありません。 WinForm自体は、それが別の解決策であればそれを呼び出すことができます。これは、VS拡張機能を実行するときに禁止します。
  3. ほかにこの問題が発生する可能性がありますか?

サイドノート、これは自分自身の拡張であり、一般的な配布ではありません。

答えて

0

後世のために投稿します。 Visual Studioでは、符号なしアセンブリへの呼び出し時に、拡張モジュールのコードの実行を停止しているように見えます。私は第三者組合に署名することでこれをテストしました(それがうまくいった)。テンプレートを使用してVisual Studioでそのプロジェクトを作成すると、VSIXはデフォルトで自身に署名します。

+1

Visual Studioでは署名が気にしませんが、余分なDLLを出荷している場合は、VSにそのDLLが見つかる場所を教えてください。それに署名することによって、ローダーで何かが変更された可能性があります。物を明示的にするには、ProvideCodebaseAttributeを使用する必要があります。 –

+0

それは面白いです、私は明日それをテストします。追加情報をありがとう。 –

関連する問題