2008-09-16 9 views
1

作成するWebPartの親として機能するWebPartのサブクラスを作成しようとしています。私が同じプロジェクトで空のクラスを作成した場合、私は期待どおりにそのクラスから継承することができます。しかし、私が別のアセンブリに配置しようとすると、クラスを参照して使用することができました。次のエラーが発生します。他のアセンブリでWebPartサブクラスを作成中にエラーが発生しました

要求されたタイプの1つ以上を読み込めません。詳細については、LoaderExceptionsプロパティを取得してください。

その他の情報(通常はSharePoint開発者ではありません):dllをコンパイルし、devプロジェクトから参照し、SharePointインスタンスの/ binディレクトリにコピーします。アセンブリはすべて署名されています。私はVS2008の '展開'機能を使用して展開しようとしています。

残念ながら、これはSharePoint固有のエラーではないようですが、問題の解決方法がわかりません。誰かがこれを経験したことがありますか?

答えて

1

問題が見つかりました。パッケージングタスクは何らかの理由でリフレクションを使用します。あなたのクラスが別のドメインのクラスから継承していることがわかったら、リフレクションを使ってクラスをロードしようとします。ただし、リフレクションはバインディングポリシーを実行しないため、ドメインはロードされません。パッケージングプログラムの

著者は、次のコードを追加することでこの問題を解決できます。

AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve); 
Assembly a = System.Reflection.Assembly.ReflectionOnlyLoadFrom(filename); 

static Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args) 
{ 
    return System.Reflection.Assembly.ReflectionOnlyLoad(args.Name); 
} 

をあなたのプロジェクトのためのソリューションを必要とする場合は、単にGACにアセンブリを追加し、それができるようになりますそれらを解決する。

関連する問題