Mixed-Mode-Montage [log4net] wird in .NET 4.0 nicht geladen werden, noch wird es funktionieren, wenn für .NET neu kompiliert 4.0

StackOverflow https://stackoverflow.com/questions/4199101

Frage

Ich hasse eine Frage zu stellen, die hier unzählige Male gefragt worden ist, sowie über alle über den Ort gebloggt, aber ich kann immer noch nicht mein aktualisierten Projekt an der Arbeit.

Mein Antrag wurde ursprünglich in VS2008 geschrieben, .NET 3.5 SP1-Targeting. Ich habe gerade auf VS2010 aktualisiert und dachte, dass ich versuchen würde, die Vorteile der neuen Sprachfunktionen zu übernehmen und integriert MEF, so dass ich alle meine Projekte geändert 4.0 .NET Ziel. alles (wie Post Build Ereignisse, MEF Referenzen und Sachen wie das) ordnungsgemäß eingerichtet und Kompilieren richtig, lief ich meine Bewerbung und bekam die immer bekannte Fehler Nachdem ich:

Mixed-Modus Montag gegen Version 'v2.0.50727' gebaut von der Laufzeit und nicht in der 4.0-Laufzeit ohne zusätzliche Konfigurationsinformationen geladen werden kann.

ich dann das folgende Attribut zu meinem <startup> Elemente in app.config hinzugefügt:

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>

Aber wenn ich meine Anwendung ausführen, bekomme ich immer noch die gleichen Fehler. Gibt es etwas, was ich tun kann, dieses Problem weiter zu debuggen? Ich habe buchstäblich keine Ahnung, was anderes zu versuchen. Ich versuche, so viele Informationen zu finden, wie ich kann auf Mixed-Mode-Baugruppen und die Art, wie sie interagieren mit der CLR, aber mein Hintergrundwissen in diesem Bereich ist bestenfalls begrenzt.

Ich habe auch zu umgehen das Problem, indem Neukompilierung log4net die Quelle zu Ziel .NET 4.0, versuche, aber das funktionierte nicht so, wie ich gehofft hatte. Nach dem Kompilieren, bekomme ich diesen Fehler:

Inheritance Sicherheitsregeln verletzt, während Mitglied überschrieben: 'log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData (System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. Sicherheit Zugänglichkeit der zwingenden Methode muss die Sicherheit Zugänglichkeit des Verfahrens entspricht außer Kraft gesetzt werden.

gefunden Also habe ich einen Beitrag, der die folgende Zeile AssemblyInfo.cs hinzuzufügen empfohlen versuchen:

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

Und wenn ich das tat, landete ich wieder da, wo ich begann! (Mit den gemischten Modus Montagefehlern).

Ugh.

War es hilfreich?

Lösung

ich am Ende alles an der Arbeit, nachdem die Quelle neu zu kompilieren, Targeting .NET 4.0. Ich weiß immer noch nicht so, weil jeder sagt, sollte es funktionieren. Das einzige, was ich auch für die Anwendung zu erhalten tun musste, schließlich war laufen MEF2 von CodePlex zu verwenden, und nicht die man in .NET 4.0 gebaut. Ich sehe nicht, warum diese beiden Dinge in Beziehung gesetzt werden würde, aber ich werde zurückgehen und versuchen, es mit log4net funktioniert, wie sie ist. Ich werde die Details hier posten, sobald ich fertig bin, und hoffentlich wird es helfen, jemand anderes, das in das gleiche Problem laufen hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top