none
Problème de runtime v2 / v4 RRS feed

  • Question

  • Bonjour,

    J'ai 2 projets dans une solution, le premier projet est une bibliothèque de classe qui appelle une autre DLL externe, et le second projet est de type application WPF. Le problème est que la DLL externe a due être créée avec du .Net 2 donc j'obtiens une erreur que j'ai pu retrouvé plusieurs fois sur le forum mais aucune des réponses n'a fonctionné dans mon cas.

    L'erreur c'est : "L'assembly en mode mixte est créé avec la version 'v2.0.50727' du runtime et ne peut pas être chargé dans le runtime 4.0 sans d'autres informations de configuration."

    J'ai crée manuellement 2 fichiers app.Config (un dans chacun des 2 projets de ma solution) avec les lignes 

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

    mais l'erreur persiste.

    Quelqu'un aurait-il une idée ou une piste pour palier ce problème ?


    jeudi 27 février 2014 13:28

Réponses

  • C'est bon j'ai enfin trouvé une solution à mon problème !
    Alors dans les répertoires Bin des 2 projets, pour chaque fichier .exe / .dll / .vshost.exe (excepté pour la dll externe que j'ai ajouté), j'ai créé un fichier nomDuFichier.exe.config / nomDuFichier.vshost.exe.config / nomDuFichier.dll.config avec à l'intérieur :

    <?xml version="1.0"?>
    <configuration>
      <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" />
        <supportedRuntime version="v2.0.50727" />
      </startup>
    </configuration>
    ensuite dans les répertoires PojetA et ProjetB j'ai créé 2 fois le même fichier app.config avec le même code xml à l'intérieur. 
    A partir de Visual studio, pour les deux projets j'ai fait "ajouté un élément existant" en allant récupérer les app.config respectifs. Ctrl+Maj+B tout marche ! 

    J'imagine qu'il y a sûrement des fichiers config en trop mais bon. 

    Merci quand même pour votre aide et vos réponses. Bon weekend !
    Cordialement

    • Marqué comme réponse Fyvel vendredi 28 février 2014 15:24
    vendredi 28 février 2014 15:24

Toutes les réponses

  • Bonjour

    A priori ca devrais fonctionner. 
    Aussi, vérifiez dans le répertoire bin que votre fichier nom_application.config contient bien la configuration spécifiée.

    Essayez de supprimer l’attribut SKU.

    Cordialement, 

     


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 28 février 2014 11:13
  • Bonjour,

    Même erreur.
    Dans mon répertoire Bin j'ai les fichiers A.dll, B.dll et monAppli.exe avec les fichiers A.dll.config, B.dll.config et monAppli.exe.config correspondants, j'ai supprimer l'attribut SKU dans les 3 fichiers .config mais rien ne change.

    (Je ne sais pas si c'est important mais les fichiers .config ont été créés manuellement)

    Cdt.



    • Modifié Fyvel vendredi 28 février 2014 12:52
    vendredi 28 février 2014 12:49
  • A.dll.config si B.dll.config vous pouvez les supprimer. 

    Essayez avec :

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

    Cordialement,

    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 28 février 2014 13:23
  • ça ne change toujours rien. 
    Ce que je ne comprends pas c'est que j'ai créé une nouvelle solution avec 1 seul projet (appli WPF) à l'intérieur cette fois, j'ajoute la DLL au projet, je crée le fichier app.config et je mets 

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

    l'exécution se déroule sans problème...

    vendredi 28 février 2014 14:28
  • Quelle architecture ciblez-vous dans les deux projets ?
    Ça peut faire la différence. Je soupçonne que le dll  c'est avec 32 bits, donc assurez-vous que le projet est sous 32 bits.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 28 février 2014 14:34
  • Alors mon PC, ma version d'OS et ma version de visual studio 2010 sont sous une base 32bits. 
    Parmi les 2 projets que je cherche à obtenir (maDLL + monApp), dans les propriétés de maDLL (onglet "Compiler") je vois "Plateforme : (any CPU) active" et pour monApp je vois "Plateforme : x86 active"

    Par contre je n'ai pas beaucoup d'info sur la DLL externe

    vendredi 28 février 2014 14:50
  • Essayez de utilizer architecture 32 bits pour les projets.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 28 février 2014 14:54
  • Concrètement je dois modifier quoi ? parce que j'ai l'impression que tout est en 32bit là 
    vendredi 28 février 2014 15:00
  • C'est bon j'ai enfin trouvé une solution à mon problème !
    Alors dans les répertoires Bin des 2 projets, pour chaque fichier .exe / .dll / .vshost.exe (excepté pour la dll externe que j'ai ajouté), j'ai créé un fichier nomDuFichier.exe.config / nomDuFichier.vshost.exe.config / nomDuFichier.dll.config avec à l'intérieur :

    <?xml version="1.0"?>
    <configuration>
      <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" />
        <supportedRuntime version="v2.0.50727" />
      </startup>
    </configuration>
    ensuite dans les répertoires PojetA et ProjetB j'ai créé 2 fois le même fichier app.config avec le même code xml à l'intérieur. 
    A partir de Visual studio, pour les deux projets j'ai fait "ajouté un élément existant" en allant récupérer les app.config respectifs. Ctrl+Maj+B tout marche ! 

    J'imagine qu'il y a sûrement des fichiers config en trop mais bon. 

    Merci quand même pour votre aide et vos réponses. Bon weekend !
    Cordialement

    • Marqué comme réponse Fyvel vendredi 28 février 2014 15:24
    vendredi 28 février 2014 15:24
  • Dans l'explorateur de solution, clic droit sur le projet, propriétés.

    Onglet  Build (deuxième), vous avez les architectures disponibles. Selectez X86.

    Cordiale


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 28 février 2014 15:24