c# - Quelle «configuration supplémentaire» est nécessaire pour référencer un assembly en mode mixte.NET 2.0 dans un projet.NET 4.0?




sqlite .net-4.0 (11)

A été capable de résoudre le problème en ajoutant l'élément "startup" avec l'ensemble d'attributs "useLegacyV2RuntimeActivationPolicy" .

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
</startup>

Mais a dû le placer comme le premier élément enfant de la balise de configuration dans App.config pour qu'il prenne effet .

<?xml version="1.0"?>
  <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
      <supportedRuntime version="v2.0.50727"/>
    </startup>
  ......
....

J'ai un projet dans lequel j'aimerais utiliser certaines des fonctionnalités .NET 4.0 mais une exigence de base est que je peux utiliser le framework System.Data.SQLite qui est compilé avec 2.X. Je vois que cela est possible, comme la réponse acceptée, mais je ne vois pas comment y parvenir.

Quand j'essaye d'exécuter mon projet 4.0 en référençant l'assemblage 2.X, j'ai:

L'assembly en mode mixte est construit sur la version 'v2.0.50727' de l'environnement d'exécution et ne peut pas être chargé dans le runtime 4.0 sans informations de configuration supplémentaires.

Quelle "configuration supplémentaire" est nécessaire?


Ajouter à suivre à cet emplacement C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Outils \ x64 NomFichier: sgen.exe.config (Si vous ne trouvez pas ce fichier, créez-en un et ajoutez-en un)

 <?xml version ="1.0"?>

<configuration>
 <runtime>        
        <generatePublisherEvidence enabled="false"/>    
    </runtime>

    <startup useLegacyV2RuntimeActivationPolicy="true">

                <supportedRuntime version="v4.0" />

    </startup>    

</configuration>

Cela a résolu le problème


Ce qui précède ne fonctionne pas pour moi (je travaille sur une application web) - mais cela a fait ...

Editez 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 Outils (Il y a aussi un dans le dossier v7.0, mais je n'ai pas besoin de changer celui-là, j'utilise VS2012)

Les conents du XML devraient ressembler à ceci (même chose dans les réponses précédentes)

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

J'éprouvais cette même erreur, et j'ai passé pour toujours ajouter les instructions de démarrage suggérées à divers fichiers de configuration dans ma solution, essayant d'isoler la discordance de cadre. 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 était "déplacé ou supprimé") a révélé qu'il était en fait le compilateur de licence (LC).

Suppression du fichier licenses.licx incriminé semble avoir résolu le problème.


J'ai aussi eu ce problème avec la bibliothèque de classe, Si quelqu'un a le problème avec la bibliothèque de classes ajouté à votre application principale. Ajoutez simplement

<startup selegacyv2runtimeactivationpolicy="true">

à votre application principale qui serait ensuite choisi par la bibliothèque de classes.


J'ai eu ce problème lors de la mise à niveau vers Visual Studio 2015 et aucune des solutions postées ici n'a fait de différence, bien que la configuration soit correcte, l'emplacement du changement ne l'est pas. J'ai corrigé ce problème en ajoutant cette configuration:

<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>

Vers: C: \ Program Files (x 86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config

Puis redémarré Visual Studio.


J'ai trouvé un moyen de contourner cela après 3-4 heures de googling. J'ai ajouté ce qui suit

<startup selegacyv2runtimeactivationpolicy="true">
  <supportedruntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>

Si cela ne résout pas votre problème, alors -> Dans le projet, Right Click on DLL v2.0.50727 Right Click on DLL où vous obtenez une erreur -> Select Properties -> Check the Run-time Version v2.0.50727 -> Si c'est v2.0.50727 alors nous savons le problème. Le problème est: - vous avez la 2.0 Version of respective DLL. La solution est la suivante: - Vous pouvez delete the respective DLL 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 version de la référence DLL, puis cela fonctionnera.


J'ai utilisé cette config:

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

A travaillé pour moi


Pour utiliser un assembly en mode mixte CLR 2.0, vous devez modifier votre fichier App.Config pour inclure:

<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>

La clé est l'indicateur useLegacyV2RuntimeActivationPolicy . Cela provoque le CLR à utiliser la dernière version (4.0) pour charger votre assembly en mode mixte. Sans cela, ça ne marchera pas.

Notez que cela ne concerne que les assemblages en mode mixte (C ++ / CLI). Vous pouvez charger tous les assemblages CLR 2 gérés sans le spécifier dans app.config .


Selon la version du framework que vous ciblez, vous pouvez chercher ici la chaîne correcte:

http://msdn.microsoft.com/en-us/library/ee517334.aspx

J'ai perdu des heures à essayer de comprendre pourquoi ma version destinée au client .Net 4.0 nécessitait la version complète. Je l'ai utilisé à la fin:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0.30319" 
               sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>

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 ceci 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 utilisés pour les fichiers de configuration :).







system.data.sqlite