管理者がプラグインをアップロードできるようにするWebベースのアプリケーションを開発しています。すべてのプラグインは、アプリルートの外部の特別なフォルダー(C:\ Pluginsなど)に保存され、Assembly.LoadFrom()を介して動的にロードされます。これはほとんどの場合問題なく機能します。プラグインのWebControlはインスタンス化されて読み込まれ、カスタムクラスは期待どおりに機能します。
カスタムVirtualPathProviderを使用して、これらのプラグインからリソースを取得しています。したがって、埋め込みASPXファイルを取得するには、「/ MySite / embeddedResource /?Assembly = MyPlugin&Resource=MyPage.aspx」のようにします。そして、それも問題なく機能します。埋め込まれたASPXファイルはコンパイルされ、通常のページのように提供されます。
ただし、問題は、埋め込まれた.aspxファイル(動的にロードされたプラグイン内)が同じプラグインアセンブリ内のクラスを参照する場合に発生します。「タイプまたはアセンブリMyPluginが見つかりません」などのコンパイルエラーが発生します。これは奇妙なことです。明らかに、MyPluginから.aspxファイルを引き出しているからです。それで、どうしてそれを見つけることができないのでしょうか?
だから、私はあなたがこれで私を助けることができることを願っています。プラグインは次のようになります。
MyPlugin.dll:
- InternalHelperClass.cs
- MyPage.aspx(.csファイルのないリソース)
MyPage.aspxに「<%= InternalHelperClass.WriteHelloWorld()%>」のようなものが含まれている場合、コンパイルは失敗します。
どうすればこれを機能させることができますか?
アップデート:
完全修飾名を使用してみました。変わりはない。ステップスルーすることは不可能です-aspxページに移動するとコンパイルエラーになります。この場合、名前空間は問題になりません(外部プラグインdllからのものであるため)
UPDATE2:
ジョエル、あなたは何かに夢中だと思います。残念ながら、これらのアセンブリを含めるようにweb.configを編集することは、設計の一部ではありません。基本的に、プラグインは完全に動的である必要があります。プラグインをフォルダーにドロップし、アプリを再起動して、準備を整えます。