IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Windows Discussion :

Rendre une application dotnet vraiment portable sur tout Windows


Sujet :

Développement Windows

  1. #1
    bruce-willis
    Invité(e)
    Par défaut Rendre une application dotnet vraiment portable sur tout Windows
    Bonjour,

    J'ai un soucis avec une application que j'ai développée, dès que l'on la lance sur une machine n'ayant pas de VS2008 installé mais .NET Framework 3.5 à 4 installé, il crashe avec comme erreur
    windows error reporting service

    EventType : clr20r3 P1 : mymiles.exe P2 : 1.0.0.0
    P3 : 49dd10c0 P4 : system.data.entity P5 : 3.5.0.0 P6 : 488ef981
    P7 : 1b48 P8 : a P9 : system.argumentexception
    L'application utilise SQL Server Compact Edition et ado.net Entity Framework! C'est sûrement lié avec l'association des deux car j'ai testé une application qui utilise SQLServer CE sans EF, elle marche.
    Dernière modification par Deepin ; 29/11/2011 à 11h10. Motif: Balises [QUOTE]...[/QUOTE]

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Avec si peu d'info (et notamment sans connaitre la ligne de code qui lève l'erreur) je ne vois pas bien ce qu'on peut te répondre.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Utilise WinDBG pour avoir plus d'infos sur l'erreur

    - lance WinDBG,
    - sélectionne "Open executable" dans le menu File, et choisis ton application
    - tape g dans le prompt pour lancer l'exécution
    - utilise ton appli jusqu'au moment où ça plante
    - quand ça plante, tape !analyze -v dans le prompt pour voir les détails de l'erreur

  4. #4
    bruce-willis
    Invité(e)
    Par défaut
    Désolé si je ne peux donner que si peu d'informations car j'ai dit que l'erreur ne se produit que sur une machine sans Visual Studio!

    Or, je veux rendre l'application portable sur tout Windows ayant bien sûr .NET 3.5 à 4 installé!

    tomlev > Je vais tester WinDbg

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Bah a priori c'est pas un problème de version installée du Framework, sinon ça démarrerait pas. Là c'est une ArgumentException, donc ça prouve qu'au moins l'appli peut se lancer...

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par bruce-willis Voir le message
    Désolé si je ne peux donner que si peu d'informations car j'ai dit que l'erreur ne se produit que sur une machine sans Visual Studio!

    Or, je veux rendre l'application portable sur tout Windows ayant bien sûr .NET 3.5 à 4 installé!
    Est ce que le EF est installé sur la machine en question ou est-il inclus dans le fichier d'installation du programme ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut
    Citation Envoyé par bruce-willis Voir le message
    Désolé si je ne peux donner que si peu d'informations car j'ai dit que l'erreur ne se produit que sur une machine sans Visual Studio!
    Il suffit de faire un log convenable pour afficher l'exception, l'inner exception ect, c'est quoi ce faux prétexte qu'on nous sert à chaque fois?
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  8. #8
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Je vois des dll entity dans l'erreur. Tu as bien installé .Net complet, et pas uniquement le profil client?
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  9. #9
    bruce-willis
    Invité(e)
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    Je vois des dll entity dans l'erreur. Tu as bien installé .Net complet, et pas uniquement le profil client?
    Je crois bien que j'ai tout installé car l'installation s'est bien passée!

    Voici la partie évoquant l'erreur dans le console de WinDbg:
    (dec.e00): CLR exception - code e0434f4d (first chance)
    ModLoad: 5e3a0000 5e42d000 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\diasymreader.dll
    (dec.e00): CLR exception - code e0434f4d (first chance)
    (dec.e00): CLR exception - code e0434f4d (!!! second chance !!!)
    eax=0012f1b0 ebx=e0434f4d ecx=00000000 edx=00000028 esi=0012f23c edi=00192828
    eip=7c812a6b esp=0012f1ac ebp=0012f200 iopl=0 nv up ei pl nz na po nc
    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
    *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\system32\KERNEL32.dll -
    KERNEL32!RaiseException+0x52:
    7c812a6b 5e pop esi
    0:000> g
    WARNING: Continuing a non-continuable exception
    (dec.e00): Break instruction exception - code 80000003 (first chance)
    eax=00000001 ebx=00000000 ecx=00000000 edx=0012f1dc esi=00000000 edi=79eda92c
    eip=7c91120e esp=0012ed3c ebp=0012f1e8 iopl=0 nv up ei pl nz na po nc
    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
    ntdll!DbgBreakPoint:
    7c91120e cc int 3
    Je tiens à préciser que beaucoup d'autres applications .NET marchent mais c'est cette dernière utilisant SQLServer CE et Entity Framework qui ne marche pas!

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu as exécuté la commande !analyze -v comme je t'ai dit ? Normalement ça devrait afficher la pile des appels

  11. #11
    bruce-willis
    Invité(e)
    Par défaut
    Je viens de le faire et voici un extrait du détail:
    StackTraceString: <none>
    HResult: 80070057
    There are nested exceptions on this thread. Run with -nested for details

    EXCEPTION_OBJECT: !pe 1373b24
    Exception object: 01373b24
    Exception type: System.ArgumentException
    Message: Le fournisseur de données .Net Framework demandé est introuvable. Il n'est peut-être pas installé.
    InnerException: <none>
    StackTrace (generated):
    SP IP Function
    0012F394 656D9888 System_Data_ni!System.Data.Common.DbProviderFactories.GetFactory(System.String)+0x13f920
    0012F3A4 6CB04FE4 System_Data_Entity_ni!System.Data.EntityClient.EntityConnection.GetFactory(System.String)+0x24
    Et là je ne comprends pas car à priori, j'ai bien le 3.5 SP1 complet installé et j'ai même ensuite installé le 4.
    Les dll liés à SQLServer CE accompagne l'application en tant que Copy Local = True!

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Je me doutais un peu que ça devait être un truc comme ça...
    SQL Server Compact ne nécessite pas d'installation, mais s'il n'est pas installé il faut ajouter un truc dans le fichier : app.config

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <configuration>
        ...
        <system.data>
            <DbProviderFactories>
     
                <!-- Au cas où il est déjà présent -->
                <remove invariant="System.Data.SqlServerCe.3.5" />
     
                <!-- A ajuster selon la version de SQL Server Compact utilisée -->
                <add name="Microsoft SQL Server Compact Data Provider"
                     invariant="System.Data.SqlServerCe.3.5"
                     description=".NET Framework Data Provider for Microsoft SQL Server Compact"
                     type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
     
            </DbProviderFactories>
        </system.data>
     
        ...
    <configuration>

    Quand SQL Server Compact est installé, cette déclaration est déjà présente dans le fichier de configuration global de l'ordinateur (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config)

  13. #13
    bruce-willis
    Invité(e)
    Par défaut
    Ça s'est un peu corsé car maintenant l'erreur change

    EventType : clr20r3 P1 : mymiles.exe P2 : 1.0.0.0
    P3 : 49dd10c0 P4 : mscorlib P5 : 3.5.0.0 P6 : 488ef981
    P7 : 1b48 P8 : a P9 : system.io.filenotfoundexception
    Voici le détail du WinDbg:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    MANAGED_OBJECT: !dumpobj 136c51c
    Name: System.String
    MethodTable: 793308ec
    EEClass: 790ed64c
    Size: 810(0x32a) bytes
     (C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
    String: Impossible de charger le fichier ou l'assembly 'System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' ou une de ses dépendances. La définition trouvée du manifeste de l'assembly ne correspond pas à la référence de l'assembly. (Exception de HRESULT : 0x80131040)
    Fields:
          MT    Field   Offset                 Type VT     Attr    Value Name
    79332b38  4000096        4         System.Int32  1 instance      397 m_arrayLength
    79332b38  4000097        8         System.Int32  1 instance      299 m_stringLength
    793315cc  4000098        c          System.Char  1 instance       49 m_firstChar
    793308ec  4000099       10        System.String  0   shared   static Empty
        >> Domain:Value  0015d610:01301198 <<
    7933151c  400009a       14        System.Char[]  0   shared   static WhitespaceChars
        >> Domain:Value  0015d610:0130175c <<
    
    EXCEPTION_MESSAGE:  Impossible de charger le fichier ou l'assembly 'System.Data.SqlServerCe, Version=3.5.0.0, Culture=n
    
    MANAGED_OBJECT_NAME:  System.IO.FileLoadException
    
    LAST_CONTROL_TRANSFER:  from 79eda91c to 7c812a6b
    
    PRIMARY_PROBLEM_CLASS:  CLR_EXCEPTION
    
    BUGCHECK_STR:  APPLICATION_FAULT_CLR_EXCEPTION_WRONG_SYMBOLS
    
    STACK_TEXT:  
    792873e1 mscorlib_ni!System.RuntimeTypeHandle.GetTypeByName+0x41
    7928737b mscorlib_ni!System.RuntimeType.PrivateGetType+0x3b
    792cc8f3 mscorlib_ni!System.Type.GetType+0x33
    65599e23 System_Data_ni!System.Data.Common.DbProviderFactories.GetFactory+0x73
    65599fdb System_Data_ni!System.Data.Common.DbProviderFactories.GetFactory+0x73
    6cb04fe4 System_Data_Entity_ni!System.Data.EntityClient.EntityConnection.GetFactory+0x24
    6cb04d17 System_Data_Entity_ni!System.Data.EntityClient.EntityConnection.ChangeConnectionString+0x18b
    6cb043e3 System_Data_Entity_ni!System.Data.EntityClient.EntityConnection..ctor+0x53
    6caa25af System_Data_Entity_ni!System.Data.Objects.ObjectContext.CreateEntityConnection+0x2b
    6caa38e5 System_Data_Entity_ni!System.Data.Objects.ObjectContext..ctor+0x11
    00df0169 EuskalMiles!EuskalMiles.euskalmilesEntities..ctor+0x29
    00df00f5 EuskalMiles!EuskalMiles.WinHome..ctor+0x2d
    00df00a6 EuskalMiles!EuskalMiles.Program.Main+0x36
    
    
    FOLLOWUP_IP: 
    mscorlib_ni+1c73e1
    792873e1 5b              pop     ebx
    
    SYMBOL_STACK_INDEX:  0
    
    SYMBOL_NAME:  mscorlib_ni!System.RuntimeTypeHandle.GetTypeByName+1c73e1
    
    FOLLOWUP_NAME:  MachineOwner
    
    MODULE_NAME: mscorlib_ni
    
    IMAGE_NAME:  mscorlib.ni.dll

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    La définition trouvée du manifeste de l'assembly ne correspond pas à la référence de l'assembly
    OK, donc la DLL SQL Server CE que tu livres avec ton appli ne correspond pas à la définition dans le fichier de config...

    Regarde dans ton fichier machine.config sur ton PC de développement, et recopie l'élément <add> qui correspond à SQL Server CE

  15. #15
    bruce-willis
    Invité(e)
    Par défaut
    Si, c'est la même définition!
    C'est une incompatibilité trop bizarre pour moi et j'ai fait le malin en installant SQL Server Compact Edition for Windows Desktop hier.
    La bonne nouvelle c'est que l'application arrive à ouvrir sa première fenêtre, le soucis c'est que dès que je clique un bouton ayant du code qui requête des données dans ma BD (fichier sdf), l'application crashe avec le messagebox du genre
    Erreurs ssdl erreur 0004 could not load system.data.sqlserverce.entity.dll. Reinstall SQL Server Compact.
    Je ne comprends pas ce message d'erreur car ce dll est bien présent localement que dans le GAC!
    Dernière modification par Deepin ; 01/12/2011 à 10h24. Motif: Balises [QUOTE]...[/QUOTE]

  16. #16
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonjour,

    Je viens juste de lire toute la discussion et j'ai tilté sur un message au tout début...
    Quel est la version du framework cible de ton projet.
    D'après ce que j'en ai compris, il faut aussi installer le framework 2 sur tes postes de déploiement.

    Bon courage
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/08/2009, 21h28
  2. comment rendre une application faite sur eclipse éxecutable?
    Par stellina20 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/06/2009, 10h43
  3. [PHP 4] rendre une application php/mysql installable sur cd
    Par fraisa1985 dans le forum Langage
    Réponses: 2
    Dernier message: 03/06/2009, 18h16
  4. comment rendre une application éxécutable sur netBeans?
    Par stellina20 dans le forum NetBeans
    Réponses: 4
    Dernier message: 01/04/2009, 12h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo