Ich habe ein Projekt, in dem ich einige der .NET 4.0-Funktionen verwenden möchte, aber eine Grundvoraussetzung ist, dass ich das System.Data.SQLite-Framework verwenden kann, das gegen 2.X kompiliert wurde. Ich sehe die Erwähnung, dass dies möglich ist, wie die hier akzeptierte Antwort, aber ich sehe nicht, wie dies tatsächlich erreicht werden kann.
Wenn ich nur versuche, mein 4.0-Projekt auszuführen, während ich auf die 2.X-Assembly verweise, erhalte ich:
Die Assembly im gemischten Modus basiert auf der Version 'v2.0.50727' der Laufzeit und kann ohne zusätzliche Konfigurationsinformationen nicht in die 4.0-Laufzeit geladen werden.
Welche "zusätzliche Konfiguration" ist notwendig?
SGEN
auftritt, muss sich das Update in einer Dateisgen.exe.config
neben befindensgen.exe
. Erstellen Sie beispielsweise für VS 2015C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\sgen.exe.config
. Quelle: SGEN Assembly im gemischten Modus Mindestinhalt der Datei:<configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
Antworten:
Um eine CLR 2.0- Assembly im gemischten Modus verwenden zu können , müssen Sie Ihre App.Config-Datei so ändern, dass sie Folgendes enthält:
Der Schlüssel ist die
useLegacyV2RuntimeActivationPolicy
Flagge. Dadurch verwendet die CLR die neueste Version (4.0), um Ihre Assembly im gemischten Modus zu laden. Ohne dies wird es nicht funktionieren.Beachten Sie, dass dies nur für C ++ / CLI-Assemblys (Mixed Mode) von Bedeutung ist. Sie können alle verwalteten CLR 2-Assemblys laden, ohne dies anzugeben
app.config
.quelle
Dieser Forumsbeitrag im .NET Framework Developer Center. Es könnte einen Einblick geben.
(Zur Konfigurationsdatei der App hinzufügen.)
quelle
Je nachdem, auf welche Version des Frameworks Sie abzielen, möchten Sie möglicherweise hier nachsehen, um die richtige Zeichenfolge zu erhalten:
http://msdn.microsoft.com/en-us/library/ee517334.aspx
Ich habe Stunden damit verschwendet, herauszufinden, warum für meinen Release .NET 4.0-Client die Vollversion erforderlich war. Ich habe das am Ende benutzt:
quelle
Sobald Sie die Datei app.config festgelegt haben , generiert Visual Studio eine Kopie im Ordner bin mit dem Namen App.exe.config . Kopieren Sie dies während der Bereitstellung in das Anwendungsverzeichnis. Klingt offensichtlich, aber überraschenderweise verpassen viele Leute diesen Schritt. WinForms-Entwickler werden nicht zum Konfigurieren von Dateien verwendet :).
quelle
Die gemeinsame Verwendung von 2.0- und 4.0-Assemblys ist nicht ganz einfach.
Die ORDER der unterstützten Framework-Deklarationen in app.config wirkt sich tatsächlich auf die Ausnahme aus, dass der gemischte Modus ausgelöst wird. Wenn Sie die Deklarationsreihenfolge umdrehen, wird ein Fehler im gemischten Modus angezeigt. Dies ist der Zweck dieser Antwort.
Wenn Sie also den Fehler in einer Windows Forms-App erhalten, versuchen Sie dies, hauptsächlich Windows Forms-Apps.
Oder wenn das Projekt nicht Windows Form ist. Fügen Sie dies in einem Webprojekt zur Datei web.config hinzu.
quelle
War in der Lage , das Problem zu lösen , indem das Hinzufügen „startup“ Elements mit „useLegacyV2RuntimeActivationPolicy“ Attribute gesetzt.
Musste es aber als erstes untergeordnetes Element des Konfigurations-Tags in App.config platzieren, damit es wirksam wird .
quelle
version="v2.0"
?Das obige hat bei mir nicht funktioniert (ich arbeite an einer Web-App) - aber das hat ...
Bearbeiten Sie die Datei sgen.exe.config im Ordner (ich musste zuerst eine erstellen); C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0-Tools (Es gibt auch einen im Ordner v7.0, aber ich musste diesen nicht ändern, ich verwende VS2012)
Die Inhalte des XML sollten so aussehen (wie in den vorherigen Antworten).
quelle
Wenn Sie in einem Webdienst arbeiten und die v2.0-Assembly eine Abhängigkeit ist, die von WcfSvcHost.exe geladen wurde, müssen Sie einschließen
in der Datei .. \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ WcfSvcHost.exe.config
Auf diese Weise kann Visual Studio zur Laufzeit die richtigen Informationen über den Loader senden.
quelle
Ich bin auf dieses Problem gestoßen, als wir zu Visual Studio 2015 gewechselt sind . Keine der oben genannten Antworten hat bei uns funktioniert. Am Ende haben wir es geschafft, indem wir die folgende Konfigurationsdatei zu ALLEN ausführbaren Dateien von sgen.exe auf dem Computer hinzugefügt haben
Besonders an diesem Ort, auch wenn wir auf .NET 4.0 abzielten:
C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Tools
quelle
Ich habe diese Konfiguration verwendet:
Hat für mich gearbeitet
quelle
Ich hatte dieses Problem beim Upgrade auf Visual Studio 2015 und keine der hier veröffentlichten Lösungen machte einen Unterschied, obwohl die Konfiguration stimmt, der Speicherort für die Änderung nicht. Ich habe dieses Problem durch Hinzufügen dieser Konfiguration behoben:
An: C: \ Programme (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config
Starten Sie dann Visual Studio neu.
quelle
Nach 3-4 Stunden Googeln habe ich einen Weg gefunden, dies zu umgehen. Ich habe folgendes hinzugefügt
Wenn dies Ihr Problem nicht löst, dann -> In den Projektreferenzen, in
Right Click on DLL
denen Sie Fehler erhalten ->Select Properties
->Check the Run-time Version
-> Wenn dies der Fall istv2.0.50727
, kennen wir das Problem. Das Problem ist: - Sie haben eine2.0 Version of respective DLL.
Lösung: - Sie könnendelete the respective DLL
aus den Projektreferenzen und danndownload the latest version of DLL's
von der entsprechenden Website die Referenz der neuesten Version der DLL-Referenz hinzufügen, dann wird es funktionieren.quelle
Ich hatte denselben Fehler und habe die vorgeschlagenen Startanweisungen für immer zu verschiedenen Konfigurationsdateien in meiner Lösung hinzugefügt, um zu versuchen, die Nichtübereinstimmung des Frameworks zu isolieren. Nichts hat geklappt. Ich habe meinen XML-Schemas auch Startinformationen hinzugefügt . Das hat auch nicht geholfen. Ein Blick auf die eigentliche Datei, die das Problem verursacht hat (was nur bedeuten würde, dass sie "verschoben oder gelöscht" wurde), ergab, dass es sich tatsächlich um den License Compiler (LC) handelt.
Das Löschen der beleidigenden Datei licenses.licx scheint das Problem behoben zu haben.
quelle
Beim Migrieren von Code von VS 2008 nach VS 2010 trat ein ähnliches Problem auf. Durch Ändern der Datei App.config wurde das Problem für mich behoben.
quelle
Fügen Sie an dieser Stelle Folgendes hinzu: C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ x64 Dateiname: sgen.exe.config (Wenn Sie diese Datei nicht finden, erstellen Sie eine und fügen Sie sie hinzu.)
Dadurch wurde das Problem behoben
quelle
Ich benutze
Es funktioniert, aber kurz vor dem De-
</configuration>
Tag, sonst funktioniert das Start-Tag nicht richtigquelle
Außerdem hatte ich dieses Problem mit der Klassenbibliothek. Wenn jemand das Problem mit der Klassenbibliothek zu Ihrer Hauptanwendung hinzugefügt hat. Einfach hinzufügen
an Sie Hauptanwendung, die dann von der Klassenbibliothek ausgewählt würde.
quelle