2010-12-18 3 views
7

Wpf UserControlライブラリを構築しました。アセンブリには大きなグループが含まれており、他の2つのクラスライブラリといくつかのマージされたresourceDictionariesも参照しています。それは間違いなく構築されます。私はシンプルなVSXパッケージを構築し、Wpfライブラリを参照し、それを実行しようとしました。ページを解析すると、xamlのUserControlページで参照されているアセンブリの一部しか見つかりませんでした。これは私に、それぞれの結合不可能なアセンブリの融合ログに以下のエラーメッセージを与えます。 "悪い"アセンブリを削除すると、次のunfindableアセンブリへの解析が続けられます。私の参照しているクラスライブラリの1つを見つけることができますが、他のクラスライブラリは見つかりません。彼らは基本的に異なるクラスの内容で設定されています。VSX 2010パッケージの読み込み - Markup.xaml解析でアセンブリが見つかりません

だから誰にもこれに関するリソースや回答はありますか?私の他のテストプロジェクトでも、WCFサービスが含まれていても問題はありません。これは私にとっては驚異的です。

おかげで、ダニー

===事前バインド状態情報=== LOG:ユーザー= AMRS \ LOG dhoneycu:​​表示名= System.Windows.Interactivity、なPublicKeyToken = 31bf3856ad364e35 (部分) WRNアセンブリの一部のバインディング情報が提供されました: WRN:アセンブリ名:System.Windows.Interactivity、PublicKeyToken = 31bf3856ad364e35 |ドメインID:1 WRN:アセンブリの表示名の一部のみが提供されている場合、部分バインドが発生します。 WRN:バインダーの読み込みに誤りがある可能性があります。 WRN:アセンブリの完全指定のテキストIDを提供することをお勧めします。 WRN:シンプルな名前、バージョン、カルチャ、および公開キートークンで構成されています。 WRN:この問題の詳細および一般的な解決策については、ホワイトペーパーhttp://go.microsoft.com/fwlink/?LinkId=109270を参照してください。 LOG:のappBase =ファイル:/// C:/プログラムファイル/マイクロソフトのVisual Studio 10.0/Common7/IDE/ LOG:初期PrivatePath = NULL

呼び出すアセンブリ:(不明)。

ログ:このバインドは、デフォルトのロードコンテキストで開始します。 ログ:アプリケーション構成ファイルを使用する:Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe.Config ログ:ホスト構成ファイルを使用する: ログ:c:\ WINDOWS \ Microsoftのマシン構成ファイルを使用する.NET \ Framework \ v4.0.30319 \ config \ machine.configに移動します。 LOG:現時点でポリシーが参照に適用されていません(プライベート、カスタム、部分、または場所ベースのアセンブリバインド)。 ログ:新しいURLファイルのダウンロードを試みる:/// C:/ Program Files/Microsoft Visual Studio 10.0/Common7/IDE/System.Windows.Interactivity.DLL。 ログ:新しいURLファイルのダウンロードを試みます。/// C:/ Program Files/Microsoft Visual Studio 10.0/Common7/IDE/System.Windows.Interactivity/System.Windows.Interactivity.DLL。 ログ:新しいURLファイルのダウンロードを試みています。/// C:/ Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PublicAssemblies/System.Windows.Interactivity.DLL。 ログ:新しいURLファイルのダウンロードを試みています。/// C:/ Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PublicAssemblies/System.Windows.Interactivity/System.Windows.Interactivity.DLL。 ログ:新しいURLファイルのダウンロードを試みます。/// C:/ Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/System.Windows.Interactivity.DLL。 ログ:新しいURLファイルのダウンロードを試みます。/// C:/ Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/System.Windows.Interactivity/System.Windows.Interactivity.DLL。 ログ:新しいURLファイルのダウンロードを試みます。/// C:/ Program Files/Microsoft Visual Studio 10.0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/System.Windows.Interactivity.DLL。 ログ:新しいURLファイルのダウンロードを試みています:/// C:/ Program Files/Microsoft Visual Studio 10。0/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/System.Windows.Interactivity/System.Windows.Interactivity.DLL。 ログ:新しいURLファイルのダウンロードを試みています。/// C:/ Program Files/Microsoft Visual Studio 10.0/Common7/IDE/PrivateAssemblies/DataCollectors/System.Windows.Interactivity.DLL。 ログ:新しいURLファイルのダウンロードを試みます。/// C:/ Program Files/Microsoft Visual Studio

答えて

19

VSPackageクラスにProvideBindingPath属性を設定する必要があります。これにより、パッケージアセンブリが置かれているディレクトリが、他の方法では見つからないアセンブリ(デフォルトのVSプロービングパスに存在しないため)のプローブになります。

% VSSDKInstallDir%\ VisualStudioIntegration \共通\ソース\ CSHARP \ RegistrationAttributes \ ProvideBindingPathAttribute.cs

すると、以下のようなあなたのVSPackageクラスに次の属性を追加します。これを行うには、あなたのプロジェクトで次のファイルを含めます:[ProvideBindingPath] public class VsPackage1 : Package { ... }

+0

ありがとうございましたAaron、それは飛ぶ前の最後のリンクでした。ダーニー – isitdanny

+0

アーロンは100万のおかげで、これを決して決してなかったでしょう... –

+0

'これを考え出さなかったでしょうか?この。間違いなくこれ。 – sircodesalot

0

はありがとうございました!

私はこれを理解しようとすると、より良い部分を過ごしました。アセンブリがVSIXパッケージに入っていて、Visual Studioで確かに見つかるはずだが、Fusion Logを見ると、標準システムの場所以外の場所を実際にスキャンしていないように見えたのは難しい。

ProvideBindingPath属性は、以降のバージョンのVS SDKのMicrosoft.VisualStudio.Shell名前空間に含まれていることに注意してください。

関連する問題