2


1

混合モードアセンブリ[log4net]は.NET 4.0で読み込まれず、.NET 4.0用に再コンパイルされても機能しません。

ここで何度も聞かれている質問や、あちこちでブログされている質問をするのは嫌ですが、アップグレードしたプロジェクトを機能させることはできません。

私のアプリケーションは、もともと.NET 3.5 SP1を対象としたVS2008で作成されました。 VS2010にアップグレードしたばかりで、新しい言語機能と統合されたMEFを活用しようと考えたため、すべてのプロジェクトを.NET 4.0をターゲットに変更しました。 すべてのもの(ビルド後のイベント、MEF参照など)を適切にセットアップし、適切にコンパイルした後、アプリケーションを実行し、非常に有名なエラーが発生しました。

_混合モードアセンブリは、ランタイムのバージョン 'v2.0.50727’に対して構築され、追加の構成情報なしでは4.0ランタイムにロードできません。

次に、 app.config`の `要素に次の属性を追加しました。


しかし、アプリケーションを実行しても、同じエラーが表示されます。 この問題をさらにデバッグするためにできることはありますか? 私は文字通り他に何を試してみるべきかわかりません。 混合モードアセンブリとそれらがCLRとやり取りする方法について、できるだけ多くの情報を見つけようとしていますが、この分野の私の背景知識はせいぜい限られています。

また、log4netのソースを.NET 4.0をターゲットとするように再コンパイルすることで問題を回避しようとしましたが、それは期待したとおりには動作しませんでした。 コンパイル後、このエラーが発生しました:

_メンバーのオーバーライド中に継承された_Inheritanceセキュリティルール: 'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo、System.Runtime.Serialization.StreamingContext)'。 オーバーライドするメソッドのセキュリティアクセシビリティは、オーバーライドされるメソッドのセキュリティアクセシビリティと一致する必要があります。

そこで、AssemblyInfo.csに次の行を追加することを推奨する投稿を見つけました。

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]

そして、私がそれをしたとき、私は始めたところからすぐに終わりました! (混合モードのアセンブリエラー)。

Ugh.

1 Answer


0


ソースを再コンパイルし、.NET 4.0をターゲットにした後、すべてが機能するようになりました。 誰もがそれが機能するはずだと言うので、私はまだこれが好きではありません。 アプリケーションを最終的に実行するために私がしなければならなかった1つのことは、CodePlexからMEF2を使用することでした。 .NET 4.0. I don’t see why those two things would be related, but I’ll go 戻って、そのままlog4netで動作するようにしてください。 完了したら詳細をここに投稿します。同じ問題に遭遇した他の人の助けになることを願っています。