J'ai un projet dans lequel j'aimerais utiliser certaines des fonctionnalités de .NET 4.0 mais une exigence essentielle est que je puisse utiliser le framework System.Data.SQLite qui est compilé avec 2.X. Je vois que cela est possible, comme la réponse acceptée ici, mais je ne vois pas comment y parvenir.
Lorsque j'essaie de lancer mon projet 4.0 tout en référençant l'assembly 2.X, j'obtiens:
L'assemblage en mode mixte est construit par rapport à la version 'v2.0.50727' du runtime et ne peut pas être chargé dans le runtime 4.0 sans informations de configuration supplémentaires.
Quelle "configuration supplémentaire" est nécessaire?
SGEN
, le correctif doit être dans un fichiersgen.exe.config
, à côté desgen.exe
. Par exemple, pour VS 2015, créezC:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\sgen.exe.config
. Source: assemblage SGEN en mode mixte Contenu minimal du fichier:<configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
Réponses:
Pour utiliser un assembly en mode mixte CLR 2.0 , vous devez modifier votre fichier App.Config pour inclure:
La clé est le
useLegacyV2RuntimeActivationPolicy
drapeau. Cela provoque le CLR à utiliser la dernière version (4.0) pour charger votre assembly en mode mixte. Sans cela, cela ne fonctionnera pas.Notez que cela ne concerne que les assemblys en mode mixte (C ++ / CLI). Vous pouvez charger tous les assemblys CLR 2 gérés sans le spécifier dans
app.config
.la source
Ce message de forum sur le .NET Framework Developer Center. Cela pourrait fournir un aperçu.
(Ajoutez au fichier de configuration de l'application.)
la source
En fonction de la version du framework que vous ciblez, vous voudrez peut-être regarder ici pour obtenir la chaîne correcte:
http://msdn.microsoft.com/en-us/library/ee517334.aspx
J'ai perdu des heures à essayer de comprendre pourquoi ma version ciblant le client .Net 4.0 nécessitait la version complète. Je l'ai utilisé à la fin:
la source
Une fois que vous avez défini le fichier app.config , visual studio génère une copie dans le dossier bin nommé App.exe.config . Copiez-le dans le répertoire de l'application pendant le déploiement. Cela semble évident, mais étonnamment, beaucoup de gens manquent cette étape. Les développeurs WinForms ne sont pas habitués à configurer des fichiers :).
la source
L'utilisation d'assemblages 2.0 et 4.0 ensemble n'est pas assez simple.
L'ORDRE des déclarations de framework prises en charge dans app.config a en fait un effet sur l'exception du mode mixte lancé. Si vous retournez l'ordre de déclaration, vous obtiendrez une erreur de mode mixte. Tel est l'objet de cette réponse.
Donc, si vous obtenez l'erreur dans une application Windows Forms, essayez ceci, principalement des applications Windows Forms.
Ou si le projet n'est pas Windows Form. Dans un projet Web, ajoutez cela au fichier web.config.
la source
A pu résoudre le problème en ajoutant l' élément "startup" avec l' ensemble d'attributs "useLegacyV2RuntimeActivationPolicy" .
Mais il a fallu le placer comme premier élément enfant de la balise de configuration dans App.config pour qu'il prenne effet .
la source
version="v2.0"
?Ce qui précède n'a pas fonctionné pour moi (je travaille sur une application Web) - mais cela a fonctionné ...
Modifiez le fichier sgen.exe.config dans le dossier (j'ai d'abord dû en créer un); C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools (Il y en a aussi un dans le dossier v7.0, mais je n'ai pas eu besoin de le changer, j'utilise VS2012)
Le contenu du XML devrait ressembler à ceci (idem dans les réponses précédentes)
la source
Si vous travaillez dans un service Web et que l'assembly v2.0 est une dépendance qui a été chargée par WcfSvcHost.exe, vous devez inclure
dans .. \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ WcfSvcHost.exe.config file
De cette façon, Visual Studio pourra envoyer les bonnes informations via le chargeur lors de l'exécution.
la source
J'ai rencontré ce problème lorsque nous sommes passés à Visual Studio 2015 . Aucune des réponses ci-dessus n'a fonctionné pour nous. À la fin, nous l'avons fait fonctionner en ajoutant le fichier de configuration suivant à TOUS les exécutables sgen.exe sur la machine
Particulièrement à cet endroit, même lorsque nous ciblions .NET 4.0:
Outils C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6
la source
J'ai utilisé cette config:
Travaillé pour moi
la source
J'ai eu ce problème lors de la mise à niveau vers Visual Studio 2015 et aucune des solutions publiées ici n'a fait de différence, bien que la configuration soit correcte, l'emplacement du changement ne l'est pas. J'ai résolu ce problème en ajoutant cette configuration:
À: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config
Puis redémarré Visual Studio.
la source
J'ai trouvé un moyen de contourner cela après 3-4 heures de recherche sur Google. J'ai ajouté ce qui suit
Si cela ne résout pas votre problème, alors -> Dans les références du projet
Right Click on DLL
où vous obtenez une erreur ->Select Properties
->Check the Run-time Version
-> Si c'est le cas,v2.0.50727
nous connaissons le problème. Le problème est: - vous rencontrez la2.0 Version of respective DLL.
solution est: - Vous pouvez àdelete the respective DLL
partir des références du projet, puis àdownload the latest version of DLL's
partir du site Web correspondant et ajouter la référence de la dernière référence de DLL de version, cela fonctionnera.la source
Je rencontrais cette même erreur et j'ai passé indéfiniment à ajouter les instructions de démarrage suggérées à divers fichiers de configuration dans ma solution, essayant d'isoler la non-concordance du framework. Rien n'a fonctionné. J'ai également ajouté des informations de démarrage à mes schémas XML . Cela n'a pas aidé non plus. En regardant le fichier réel qui causait le problème (qui dirait seulement qu'il a été "déplacé ou supprimé"), il s'est avéré qu'il s'agissait en fait du License Compiler (LC).
La suppression du fichier licences.licx incriminé semble avoir résolu le problème.
la source
J'étais confronté à un problème similaire lors de la migration de code de VS 2008 vers VS 2010 La modification du fichier App.config a résolu le problème pour moi.
la source
Ajoutez ce qui suit à cet emplacement C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ x64 FileName: sgen.exe.config (si vous ne trouvez pas ce fichier, créez-en et ajoutez-en un)
Faire cela a résolu le problème
la source
J'utilise
Cela fonctionne, mais juste avant le
</configuration>
tag, sinon le tag de démarrage ne fonctionne pas correctementla source
J'ai également eu ce problème avec la bibliothèque de classe, si quelqu'un a le problème avec la bibliothèque de classe ajoutée à votre application principale. Ajoutez simplement
à votre application principale qui serait ensuite choisie par la bibliothèque de classes.
la source