8

このエラーが発生 しました。「アセンブリ'mscorlib、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'からタイプ'System.Runtime.CompilerServices.ExtensionAttribute'を読み込めませんでした。」

Webサイトのbinディレクトリにquartz.netのdllを含め、コードで参照するときはいつでも。私はそれが間違った.netフレームワークに関係していると確信しています。

私のasp.netサイトはターゲットフレームワーク4.0を使用しています私は.net4quartz.netファイルを使用しています

私のIISアプリプール(クラシック.netプール)は.net4.0フレームワークを実行するように設定されています。

どこから始めればよいかわかりませんが、クォーツを削除することで確実にわかっているので、再び見栄えが良くなります(スケジュールを除く)

4

3 に答える 3

6

C#で拡張メソッドを使用するには、 ExtensionAttributeクラスが必要です。.NET Framework 4.0では、このクラスはアセンブリSystem.Core.dllにありますが、.NETFramework4.5ではクラスはmscorlib.dllに移動されました。問題は、Quartz.dll(またはその他のアセンブリ)が.NET Framework 4.5がインストールされたコンピューターでコンパイルされたため、.NETFramework4.0のみのコンピューターにはないmscorlib.dllのExtensionAttributeが必要なことだと思います。

.NET Framework 4.5を使用せずにコンピューターでQuartzを再コンパイルすると、問題が解決すると思います。また、IISを使用してサーバーに.NET Framework 4.5をインストールすると役立つはずですが、まだベータ版であるため、お勧めしません。

于 2012-04-13T19:38:20.097 に答える
5

Quartz.Netは4.5フレームワークに対してコンパイルされたため、これは最終バージョンで導入された問題でした。問題が報告されたこのスレッドを見てください。dllの修正バージョンが利用可能です。

于 2012-04-13T20:17:45.430 に答える
1

mscorlibアセンブリへの参照を追加し、ローカルコピーをtrueに設定してみましたか?

ここを読んで:

この問題は、ILMerge.exeの実行方法に関係しています。タイプ転送(この場合はExtensionAttributeタイプ)は、サポートされているシナリオでは、ランタイムとコンパイラーに対して透過的であるという意味で、ノーブレーク変更と見なされます。コンパイラーまたはコンパイラーのようなツール(ILMergeの1つ)は、ランタイムの他の機能をサポートすることが期待されるのと同じように、型転送をサポートすることが期待されます。さらに、コンパイラを実行するためにサポートされている方法は、適切なマルチターゲティングパックの参照アセンブリを明示的かつ完全に参照することです。

于 2012-04-13T10:49:32.747 に答える