2016-05-05 11 views
0

問題 VSIXプロジェクトで参照されている静的(拡張メソッド)があります。 VSIXプロジェクトをコンパイルすると、VSIX dll(Sameフォルダ)とともにbin/debugフォルダにdllが表示されます。VSIXは別のDLLで静的メソッドを見つけることができません

さらに、intellisenseはこれに問題はなく、コンパイルもしません! VSIXプロジェクトをデバッグモードで実行するとき。

「メソッドが見つかりません:: 『私はこのエラーが表示されます。可能System.Stringメソッド名(可能System.String)』(ビン/デバッグフォルダに)別のアセンブリ内の拡張メソッドである

私は」これらのような他の記事を読みまし:

Can't find VSIX dlls with DllImport

Include external .dll in Visual Studio Extension

どちらのソリューションは私に右見ていない、すべての後、DLLが適切foldeでありますr、それはそれ自身のコードを見つけますが、他のアセンブリは見つかりません....参考文献とusingステートメントとintellisenseの作業!

これはローダーの問題であることを示しています。何とかVSIXプロジェクトが他の参照されているアセンブリを読み込めないか、またはおそらく設計通りです。

資産として読み込もうとしましたが、他のVSIXプロジェクトではないので、すべての資産オプションがあります。

enter image description here

お知らせしかしこれらの資産タイプは、すべてのMicrosoft.VisualStudioが付いていること。私はMicrosoft.VisualStudio.Assemblyを試してみましたが、実際には動作しません。

別の奇妙なことに、私はEXEとして提供されるさらに別のアセンブリへの参照を含んでいました。これらのメソッドはすべて正常に動作します。ロードされていないdllだけです。これらのために、私はUSING文を使用することはできません。完全に修飾されたNameSpace名を使用して動作させる必要があります...しかし、DLLで同じトリックを試しても動作しません。

つのポストは、マニフェストファイルに手動でアセンブリを追加することを示唆し...しかし、そのポストは、これはどちらか動作しません。2010年

にあった:

はで参照されるアセンブリから衛星DLLを含めるにはVSIXパッケージでは、VSIXプロパティに含まれるOutput GroupsにSatelliteDllsProjectOutputGroupを追加します。

何が欠けていますか?

答えて

0

この問題の根本的な原因は、デフォルトでVSIXのすべてがStrong Namedであることです。私は署名されていないサードパーティDLLのためにそのオプションのチェックを外しました。私はソースと "Strong Name"を得ることができました。

次にVSIXプロジェクトの名前を強くして、すべてが機能しました。プロジェクトのプロパティページへ

ゴー:

enter image description here

私は、ソースコードが得られないときにできる、強力な名前のDLL、このようなツールに探し始めました。

https://brutaldev.com/post/net-assembly-strong-name-signer

関連する問題