wake-up-neo.com

"Diese Assembly wird durch eine neuere Laufzeit als die aktuell geladene Laufzeit erstellt und kann nicht geladen werden"

Ich erhalte den Fehler: "Diese Assembly wird durch eine neuere Laufzeit als die aktuell geladene Laufzeit erstellt und kann nicht geladen werden."

Ich habe ein .NET 4.0-DLL-Projekt, das von einem .NET 2.0-Projekt aufgerufen wird. Gibt es eine Möglichkeit, die Unterschiede im Rahmen auszugleichen?

48
Nick Myers

Ich habe ein .NET 4.0-DLL-Projekt, das von einem .NET 2.0-Projekt aufgerufen wird. Gibt es eine Möglichkeit, die Unterschiede im Rahmen auszugleichen?

Nicht so herum, nein. Die .NET 4-CLR kann .NET 2-Assemblys laden (normalerweise gibt es einige Ausnahmen für Mixed-Mode-Assemblys, IIRC), nicht jedoch umgekehrt.

Sie müssen entweder das .NET 2-Projekt auf .NET 4 aktualisieren oder das .NET 4-Projekt auf .NET 3.5 (oder früher) herunterstufen.

43
Jon Skeet

Wenn Sie bereits alle anderen logischen Lösungen auf dieser Seite ausprobiert haben, überprüfen Sie dies noch einmal. In meiner app.config hatte ich einen Hinweis auf ein altes Framework. 

<startup>
  <supportedRuntime version="v2.0.50727"/>
</startup>

gewesen sein sollte 

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

Auf der Registerkarte "Projekt" wurde v4.0 korrekt angezeigt, aber die app.config wurde mit dieser Änderung nicht für unser Repo festgelegt. Um das Problem zu beheben, habe ich das Framework in etwas anderes geändert und wieder auf 4.0 zurückgesetzt, wodurch meine app.config-Datei aktualisiert wurde. 

8
user2209195

Ich habe dieselbe Fehlermeldung erhalten. Ich habe gegeben

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe "C:\MyService\MyService.exe"

Anstatt

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "C:\MyService\MyService.exe"

7
Ziggler

Da nur eine Version der Laufzeit in einen Prozess geladen werden kann (obwohl andere bereits angedeutet haben, ist das Rückwärtsladen - 4.0, das 2.0 lädt - in Ordnung ist), haben Sie einige Optionen:

  • Aktualisieren Sie das .NET 2.0-Projekt
  • Wickeln Sie das .NET 2.0-Projekt ein (wenn die Quelle nicht Ihre ist)
  • Downgrade des .NET 4.0-Projekts
  • Laden Sie das .NET 4.0-Projekt in seinen eigenen Prozess (ich glaube, dass dies funktionieren kann - aber ein bisschen Mühe, IMO)
5
IAbstract

Sie müssen entweder das .NET 2-Projekt auf .NET 4 aktualisieren oder das .NET 4-Projekt auf .NET 3.5 (oder früher) herunterstufen.

Wie aktualisieren Sie die .net-Version? Ich bin nicht sicher, wohin und was ich spezifizieren soll. Bitte helfen.

Edit: .__ Ich habe die Antwort selbst gefunden. Wählen Sie das Projekt aus, klicken Sie mit der rechten Maustaste und wählen Sie Eigenschaftenseiten. Dort können Sie die Framework-Version auswählen. oder wählen Sie das Projekt aus und klicken Sie auf Shift + F4

5
Aditya Bajaj

Interessanterweise bekam ich diesen Fehler immer wieder. Für mich war das Erstellen einer Config namens gacutil.exe.config im selben Verzeichnis wie gacutil.exe. Der config-Inhalt (eine Textdatei) war:

<?xml version ="1.0"?> <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
    </startup> </configuration>

Ich poste dies hier als Referenz und frage, ob jemand weiß, was unter der Haube wirklich passiert. Ich behaupte nicht, dass dies die "richtige" Vorgehensweise ist

3
Prof

Ändern Sie INSTALL_UTIL_HOME Verzeichnis von "C:\WINDOWS\Microsoft.NET\Framework\v2.0" in "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319" Installation des Dienstes Dieser Fehler tritt hauptsächlich bei der Version "Missmatch" auf. 

2

Ich habe auch diese Fehlermeldung erhalten, aber mein Problem war, dass ich eine ältere Version von GACUTIL.EXE verwendete.

Nachdem ich die richtige GACUTIL für die neueste .NET-Version installiert hatte, funktionierte es einwandfrei.

Der Fehler ist irreführend, da er so aussieht, als wäre es die DLL, die Sie versuchen, das falsche zu registrieren.

2
ObeOne

Dieser Fehler kann auch dadurch ausgelöst werden, dass in IIS die falsche .NET Framework-Version als Standard ausgewählt wurde.

Klicken Sie auf den Stammknoten unter der Ansicht Verbindungen (links), wählen Sie .NET Framework-Version ändern aus der Aktionen Ansicht (rechts) aus, und wählen Sie dann aus die entsprechende .NET-Version aus der Dropdown-Liste.

1
Steven Wolfe

Die .net-Version stimmt nicht mit der dll überein. Wechseln Sie daher in in app.config oder web.config . Im Allgemeinen haben Sie ein höheres Framework als niedriger, da die DLL-Datei des Systems der niedrigeren Version hinzugefügt wird. Es funktioniert also nur auf die höhere Version

0
abdul basit

Der Fehler war auf die Art und Weise zurückzuführen, wie ich den Anwendungspool in IIS konfiguriert habe.

Mein Webservice verwendet ein für v2.0.50727 konfiguriertes Anwendungstool. Dies führte zu der Fehlermeldung.

Als ich es auf v4.0.30319 änderte, wurde der Fehler nicht angezeigt.

0
YbK

Als ich die .Net-Frame-Work-Version des App-Pools änderte, in dem das jeweilige Projekt gehostet wurde, konnte ich dieses Problem lösen.

App-Pool -> Erweiterte Einstellungen -> .Net Frame Work-Version (v2.0 zu v4.0 geändert)

0
NidhinSPradeep