33

型 'x' は、参照されていないアセンブリで定義されています。アセンブリ 'abc123' への参照を追加する必要があります。

アセンブリ 'abc123' を参照する .NET 2.0 Web アプリケーションがあります。アセンブリは GAC に存在し、それが正しい (同じ) バージョンであることを確認しました。アプリケーションの残りの部分には、1 つの .aspx ページを除いて問題はありません。問題のページには、ユーザー コントロールを「フィールド」の 1 つとして表示するリピーターがあります。タイプ y のリストをリピーターにバインドすると、次に示すように、タイプ x (y のプロパティ) のリストをユーザー コントロールに渡します。

<uc1:usercontrol id="ucusercontrol " runat="server" myPublicUserControlProperty='<%#Eval("CollectionOfX") %>'/>

ユーザー コントロールのプロパティ セットで、タイプ x のリストをユーザー コントロールのグリッドビューにバインドします。

注意すべき奇妙な点の 1 つは、このレポートは開発用 PC では正常に機能しますが、展開するとどのサーバーでも機能しないことです。私のPCはWindows XP、IIS6、VS2005です。サーバーは Windows Server 2003、IIS6 です。

十分に説明したことを願っています。あなたが提供できる洞察を前もって感謝します。

4

7 に答える 7

31

私はマイクの同僚で、解決策を考え出しました。

型 X は彼のアセンブリで定義されていますが、これは GAC のみです。彼の ASP.NET Web アプリケーションには参照がありましたが、この UserControl についてのみ GAC からの読み込みに失敗していました。アプリケーションの残りの部分は期待どおりに機能しました。アセンブリのコピーを bin ディレクトリに配置することで、ロードの失敗を確認し、すべてが機能しました。アセンブリを取り外したところ、問題が再発しました。

私たちの解決策は、アセンブリ セクションの web.config にエントリを手動で追加して、ASP.NET が GAC を指すようにすることでした。

(コード ビハインドではなく) ページで型を参照するときはいつでも、web.config ファイルまたはページ ディレクティブで定義されたアセンブリ情報が必要になるようです。

<assemblies>
        <add assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=[MyPublicKeyToken]"/>   
</assemblies>
于 2008-11-12T19:32:54.487 に答える
4

こちらで説明されている、同様の症状で現れるバグもあります。

回避策は、C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\ ディレクトリ内のすべてを削除することであり、デバッグ モードでのみ現れるようです。

于 2009-02-12T01:47:51.247 に答える
3

この種の問題をトラブルシューティングする場合、Fusion Log Viewerは常に大きな助けになります。

于 2008-11-12T16:27:16.123 に答える
1

iftype xは実際には のクラスでありApp_Code、それを汚して再保存すると、多くの場合、Web アプリが強制的に再コンパイルされて問題が解決することがわかりました。

于 2012-03-02T11:01:24.663 に答える
0

まったく同じエラーが発生しましたが、別のプロジェクトのオブジェクトをパラメーターとして使用するクラスにパブリックコンストラクターがありました。

そのコンストラクターを内部にすることで問題を解決しました。

于 2011-02-16T13:39:48.473 に答える
0

多くの場合、キャッシュされたアセンブリが原因です。この問題を解決する 1 つの方法は、proj または config ファイルで「強い参照」を作成することです。このブログ投稿を参照してください

于 2011-03-07T02:00:05.023 に答える