528 votes

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?

J'ai un projet dans lequel je voudrais utiliser une partie des .NET 4.0 caractéristiques, mais une exigence fondamentale est que je peux utiliser le Système.Les données.SQLite cadre qui est compilé contre 2.X. Je vois la mention de ce qui est possible comme l'a accepté de répondre ici, mais je ne vois pas comment y arriver.

Quand je viens de l'essayer et d'exécuter mon projet 4.0 en faisant référence à la 2.X assemblée j'obtiens:

En mode mixte de l'assemblée est construit contre la version " v2.0.50727 " de l'exécution et ne peut pas être chargé dans la version 4.0 d'exécution sans plus les informations de configuration.

Ce que "configuration supplémentaire" est-elle nécessaire?

688voto

Reed Copsey Points 315315

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

 <?xml version="1.0"?> 

La clé est le drapeau
. 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 les spécifier dans <configuration> .

35voto

JasCav Points 18931

Ce message de forum sur le Centre de développement .NET Framework. Cela pourrait fournir un aperçu.

(Ajouter au fichier de configuration de l'application.)

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

14voto

<p>Selon quelle version du framework vous êtes ciblé, vous pouvez regarder ici pour obtenir la chaîne correcte :<p><a href="http://msdn.microsoft.com/en-us/library/ee517334.aspx">http://msdn.Microsoft.com/en-us/library/ee517334.aspx</a></p><p>J’ai perdu des heures à essayer de comprendre pourquoi mon client de .net 4.0 de ciblage de sortie requis la version complète. J’ai utilisé cela en fin de compte :</p><pre><code></code></pre></p>

11voto

Raheel Khan Points 2871
<p>Une fois que vous définissez le fichier <strong>app.config</strong> , visual studio génère une copie dans le dossier bin, nommé <strong>App.exe.config</strong>. La copier dans le répertoire de l’application lors du déploiement. Sons évidentes, mais étonnamment beaucoup de gens manquez pas cette étape. Les développeurs WinForms ne servent pas aux fichiers de config :).</p>

8voto

Wiser Web Points 71

À l'aide de 2,0 et 4,0 assemblées ensemble n'est pas assez simple.

L'ORDRE de la prise en charge du cadre de déclarations en application.config réellement un effet sur l'exception de mode mixte en cours de levée. Si vous inversez l'ordre de déclaration, vous obtiendrez en mode mixte erreur. C'est le but de cette réponse.

Donc, si vous obtenez le message d'erreur dans une application Windows Forms, , essayez cela, la plupart des Formes de Windows apps.

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

Ou si le projet n'est pas un Formulaire Windows. Dans un projet Web ajouter ce site web.fichier de configuration.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X