none
EnterpriseServices encore, hélas RRS feed

  • Question

  • Bonjour tout le monde,

    J'ai créé un site web sous Visual Studio 2005 (professionnel, pourtant, on est donc fondé à se demander ce que signifie professionnel), ça fonctionnait bien il y a quelques jours, et maintenant on me dit en page d'accueil que le même site (auquel je n'ai rien modifié) ne peut plus tourner, sur le même VS 2005, sur la même machine, car il manque EnterpriseServices.dll, que je n'ai pas conscience -tant que je n'ai pas cherché- d'avoir utilisé, et qui est bien pourtant toujours à sa place (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727).

    En bas de la page d'accueil (du site en développement, celle qui maintenant m'insulte) figure la mention
    Informations sur la version : Version Microsoft .NET Framework :2.0.50727.3607; Version ASP.NET :2.0.50727.3614

    L'erreur est bien là, puisque EnterpriseServices porte le numéro de version 2.0.50727.3053 (netfxsp.050727-3000) et non 3607.

    Comment dois-je m'y prendre pour convaincre Visual Studio de fonctionner comme au début de la semaine avec la plateforme .Net 2.0.50727.3053, et non avec une version qui n'existe pas sur la machine ?

    Accessoirement, une fois que ceci est fait, comment être avisé qu'une mise à jour existe et une fois que le calendrier le permet l'installer ? Sachant que update.microsoft.com m'a affirmé que tout était à jour. Je veux bien admettre qu'il soit "fortement" conseillé de mettre à jour avant de déployer, mais qu'il devienne impossible d'une minute sur l'autre de travailler et même de visualiser le résultat de ce qu'on a fait, j'ai tendance à trouver ça abusif, même si c'est une faiblesse de ma part.

    Je précise que ce qui est réellement gênant dans l'histoire est que ça arrive très souvent. La première fois je m'en suis sorti (avec le secours d'un intervenant sur le newsgroup) en désinstallant toutes les plateformes .Net dans l'ordre décroissant des versions et en réinstallant tout dans l'ordre inverse, en n'omettant pas de réinstaller Visual Studio au bon moment, mais parfois, si on a installé Visual Studio, c'est pour développer, aussi. Alors s'amuser comme ça une fois, admettons, mais toutes les semaines, ou même tous les mois, on ne va pas pouvoir ...

    Parfois ça s'arrange après quelques heures de mise à jour, pas toujours. J'ai déclaré la référence, il arrive que ça aide.

    Y a-t-il moyen de rester calme ?


    (Ne pas oublier que la coexistence avec .Net 3 est obligatoire, pour le fonctionnement de SQL Express 2008, qui a été préféré à son équivalent 2005 car le programme d'installation est plus au point.)

    (Le développement de mon site est effectué en C#, mais il m'a semblé qu'il s'agissait plutôt d'un problème de mise à jour de la plateforme, donc guère spécifique du langage. Si je me trompe je veux bien aller où il faut .. )

     

    vendredi 6 août 2010 19:28

Réponses

  • Bonjour,

    Pour convertir un site web vers une application web voici la procédure : http://msdn.microsoft.com/en-us/library/aa983476(VS.80).aspx

    L'assembly EnterpriseServices permet d'utiliser des composants COM+.

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 14 août 2010 18:00
    Modérateur
  • Bingo !

    J'ai jeté un coup d'œil là : http://forums.asp.net/t/1033129.aspx

    Alors j'ai tapé
    gacutil -i "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dl"

    et ça a donné ça :
    -------------------
    Microsoft (R) .NET Global Assembly Cache Utility.  Version 2.0.50727.42
    Copyright (c) Microsoft Corporation.  All rights reserved.

    Échec de l'ajout de l'assembly au cache :   Syntaxe du nom de fichier, de répertoire ou de volume incorrecte.
    ------------------
    Quezaco ? Ah oui c'était le fichier source qu'il fallait mentionner en argument ?

    Mais la suite du fil s'est avérée plus concluante, puisqu'en réparant .Net 3.5 SP1 à partir du panneau de configuration, ajout/suppression de programmes, ça m'a remis mon Visual Studio d'aplomb, et que ça a été l'affaire d'une vingtaine de minutes. ça m'intrigue un peu, alors que les messages d'erreur ont explicitement mis en cause la version 2, que ce soit la réparation de la version 3.5 (la dernière) qui soit concluante, m'enfin bon, l'essentiel, c'est que ça marche.

    Après je chercherai comment le faire à partir de la ligne de commandes pour éviter d'avoir à afficher tout le panneau de configuration, ça je suppose qu'il faut le chercher en tapant "dotnetfx35 /?" dans le répertoire de téléchargement. C'est vrai que je me passerais bien d'avoir à le refaire toutes les deux semaines, mais si c'est une histoire de vingt minutes, on arrivera à gérer.

    Après cette réparation, la génération de mon site a pris un sacré petit bout de temps, mais elle a abouti sans erreur.

    En définitive l'apport du passage par un projet de type application web a été indirect, mais il m'a permis de trouver une solution, puisque ce sont les messages d'erreur obtenus à partir de ce type de projet qui m'ont donné l'idée de chercher "recompiler System.EnterpriseServices", et que la première réponse à cette requête a été la bonne.

    Merci donc pour cette sacrée épine en moins dans mon pied.
    • Marqué comme réponse Gloops samedi 21 août 2010 15:57
    samedi 21 août 2010 15:51

Toutes les réponses

  • Bonjour,

    Normalement, le changement de version sur le dernier nombre ne devrait pas empêcher votre application de fonctionner. Le changement du dernier nombre dans les versions des assembly .NET Microsoft, indique un hotfix (le plus souvent la correction d'une ou plusieurs faille de sécurité).

    Prenons le problème à l'envers, avez vous besoin de l'assembly "System.EnterpriseServices.dll" ? Si non, supprimez cette référence dans votre application web ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    dimanche 8 août 2010 21:26
    Modérateur
  • Bonjour, Normalement, le changement de version sur le dernier nombre ne devrait pas empêcher votre application de fonctionner.

    C'est effectivement  ce qu'il m'avait semblé, et le fond de la question pourrait se tourner ainsi : comment faire en sorte que la plateforme réagisse comme elle devrait ? ;)

     

    Le changement du dernier nombre dans les versions des assembly .NET Microsoft, indique un hotfix (le plus souvent la correction d'une ou plusieurs faille de sécurité).

    Oui, ça, c'est bien ce qu'il m'avait semblé comprendre, c'est bien pour ça que je prends en compte la nécessité d'effectuer la mise à jour, autant que possible sans pour autant empêcher toute activité qui se satisfaisait jusque là, faute de mieux, du risque détecté.

     

    Prenons le problème à l'envers, avez vous besoin de l'assembly "System.EnterpriseServices.dll" ? Si non, supprimez cette référence dans votre application web ?

    En fait, EnterpriseServices a d'abord fait son apparition dans la fenêtre des erreurs, sans pour autant pointer sur une ligne de code particulière, avec si mes souvenirs sont exacts l'erreur DLL introuvable.

    C'est ensuite que j'ai déclaré la référence. Ce fil n'est en effet de loin pas le premier sur la question, et dans l'un de ceux que j'ai lus est conseillé de déclarer la référence. C'est un fait qu'au début ça a amélioré les choses. Hélas, cette amélioration ne s'est pas avérée définitive.

    A présent cette erreur apparaît non plus dans la fenêtre des erreurs, mais sur la page du site web : la compilation se fait, mais avec une gestion d'erreurs un peu particulière : on annonce à l'utilisateur final "votre programmeur est une bille, il a laissé une erreur grosse comme lui".

    Alors je veux bien essayer de mettre la référence en creux, pour dire de ne pas se préoccuper de EnterpriseServices, mais ... il faudrait m'expliquer comment faire :)

     

     

    Pour le moment la plateforme fonctionne, mais parce que j'ai passé sept heures d'affilée à tout réinstaller.
    dimanche 8 août 2010 22:32
  • Bonjour,

    Une question : Votre projet web est une "Application Web" ou un "Site Web" ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 9 août 2010 07:27
    Modérateur
  • Euh, c'est quoi, déjà, la différence ?

    J'ai bien préparé une interface de saisie, mais je ne l'ai pas encore mise en ligne (du moins pas longtemps, car un mot de passe en clair dans le web.config, je trouvais que ça craignait).

    Je suis d'ailleurs en train de travailler sur le cryptage, je pense que je vais finir par trouver quelque chose qui se tient (au prix hélas d'un peu de place sur le disque du serveur).

    Quand on crée un nouveau site sous Visual Studio, on parle bien de site, après ça n'empêche pas d'y mettre un formulaire de saisie, un autre d'affichage, de gérer des stocks, tout ça, même si Visual Studio appelle ça au départ un nouveau site web.

    Pour le moment, ce que j'exploite vraiment, en ligne, de la plateforme .Net c'est surtout la reconnaissance de la culture de l'utilisateur. C'est vrai qu'il commence à être temps de mettre en ligne le reste, je me demande si ça suffira à résoudre cette question de ... EnterpriseServices.

     

    lundi 9 août 2010 18:01
  • Bonjour,

    Vous utilisez donc les "Site web", dans ce cas, dans les propriétés de votre projet allez dans "Références". Dans liste supprimez la référence à EntrepriseServices.

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 9 août 2010 20:39
    Modérateur
  • Mais je répète, je n'aurais jamais eu l'idée de mettre cette référence si cette erreur ne s'était pas produite.

    Au départ nous avons donc un site web sans la référence à EnterpriseServices, qui dénonce dans la fenêtre des erreurs que EnterpriseServices n'a pas été trouvé.

    Introduire la référence solutionne le problème pour quelques semaines, puis il se pose à nouveau quand même.

    Introduire la référence à EnterpriseServices n'a pas été fait par goût des ennuis, juste parce que la plateforme était plantée, et que pour un moment ça marchait avec.

    Admettons que je remette les références comme au départ, donc sans EnterpriseServices, si maintenant Visual Studio se remet, dans quelques semaines, à ne plus vouloir me compiler de site web (celui sur lequel je suis en train de travailler, ou un autre en archive, qui fonctionnait aussi très bien, ou un nouveau) parce qu'il ne trouve pas cette DLL, comme il l'a déjà fait trois ou quatre fois, qu'est-ce que je fais ? Comme ce week-end, je désinstalle .Net, je réinstalle Visual Studio, et je réinstalle .Net ? Il devrait y avoir plus rapide, non ? Sept heures, ça m'a pris.


    mardi 10 août 2010 04:53
  • Bonjour,

    Personnellement, au lieu de faire un "Site web" j'aurai migré vers une "Application web". L'application web, produit des pages et une DLL comme n'importe qu'elle DLL .NET. Dans Visual Studio 2003, on utilisait uniquement des "Application web", sous Visual Studio 2005 Microsoft avait sorti et forcé les utilisateurs à utiliser le concept de "site web". Cela a provoqué un râlement collectif qui a obligé Microsoft à réintégrêr les "applications web" dans le SP1 de Visual Studio 2005.

    Personnellement, même si je peux vous dire par avance que cela va résoudre votre problème, je vous conseille d'effectuer cette migration (sauvegarder vos sources avant !). Ainsi, votre application aura le même comportement (et les mêmes problèmes) qu'une application/DLL classique .NET, on pourra mieux regarder de plus près votre problème... 

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mardi 10 août 2010 07:26
    Modérateur
  • Bonjour,

    Si je cherche à créer un nouveau projet avec Visual Studio, voici la boîte de dialogue que j'obtiens:

    http://cjoint.com/?ilwJqBQxfz

    Il m'est arrivé de créer une DLL pour transmettre une fonction d'un site à l'autre ...

     

    mercredi 11 août 2010 20:36
  • Bonjour,

    Allez dans la rubrique "Web" et choissisez "Application Web ASP .NET".

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mercredi 11 août 2010 21:15
    Modérateur
  • D'accord. Bon, alors la prochaine fois que la plateforme se met en rideau, j'essaie ça.

    Si ça marche, j'imagine que ça va m'obliger à recommencer tout le contenu.

     

    Pour ce qui est de la formule site web, que nous avons été tellement encouragés à développer, il va falloir considérer qu'il n'y a pas de réponse ?

     

     

    J'ai trouvé le mot Enterprise dans un fil consacré aux ressources d'internationalisation. A ce moment je me suis demandé si ce ne sont pas les ressources qui induisent un appel à EnterpriseServices. Pour le moment je dois avouer que je n'ai pas pris le temps de vérifier.

     

    samedi 14 août 2010 15:08
  • Bonjour,

    Pour convertir un site web vers une application web voici la procédure : http://msdn.microsoft.com/en-us/library/aa983476(VS.80).aspx

    L'assembly EnterpriseServices permet d'utiliser des composants COM+.

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 14 août 2010 18:00
    Modérateur
  • Effectivement, ce n'est pas nécessairement plus long que de réinstaller VS avec désinstallation de .Net avant et réinstallation après.

    L'histoire dira si ça apporte une solution.

    ça m'arrangerait assez de ne jamais le savoir (ça, apparemment ça dépend de paramétrages au niveau de la mise à jour, et le fait de se reposer sur plusieurs produits de versions différentes ne facilite pas forcément l'appréhension globale du sujet y compris par Microsoft).

    Cela étant, au moins, maintenant, si j'ai de nouveau ce message d'erreur, j'ai quelque chose à essayer. A ce moment-là, je saurai si ça solutionne le problème ou non. J'en profiterai pour lire les autres rubriques,  voir si il y a d'autres avantages à passer en application web -et en même temps si des fois il n'y aurait pas aussi des inconvénients.

    Merci pour le temps passé à m'expliquer cette piste.

     

    dimanche 15 août 2010 12:19
  • Bonjour tout le monde,

    Me revoilà.

    Alors mon Visual Studio s'est remis en rideau vis-à-vis des créations de sites web, avec le même message que d'habitude, donc me revoici sur ce sujet.

     

    J'ai créé une application web, avec rien dedans, et je l'ai lancée, en m'attendant donc si tout se passe bien à obtenir une page toute blanche.

    J'ai obtenu le même message dans la fenêtre des erreurs.

    A la différence d'un site web, ça n'empêche pas d'afficher une fenêtre de résultat dans Internet Explorer, et là je vois :

     

    Erreur de compilation

    Description : Une erreur s'est produite lors de la compilation d'une ressource requise pour répondre à cette demande. Veuillez consulter ci-dessous les détails relatifs à l'erreur en question, puis modifier votre code source de manière appropriée.

    Message d'erreur du compilateur: CS0006: Le fichier de métadonnées 'C:\WINDOWS\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll' est introuvable

    Erreur source:

     
    [Aucune ligne source appropriée]

    Fichier source:    Ligne: 0

     

     

    <hr>

    On a la possibilité d'afficher les résultats détaillés de la compilation, mais me semble-t-il on obtient les mêmes informations que ci-dessus.

     

    J'ai bien aimé le conseil de modifier mon code source, puisque, je le répète, je n'ai pas écrit une seule ligne.

     

    Dans l'histoire, me semble-t-il, ce qu'on a obtenu de nouveau et intéressant, c'est le numéro d'erreur, CS0006, qui peut servir de point d'entrée à des recherches.

    Alors donc si je cherche ça, le résultat est plus bref que sa référence :

    Le programme a été compilé et a passé explicitement le nom d'un fichier qui contenait des métadonnées ; cependant, ce fichier .dll est introuvable. Pour plus d'informations, consultez /reference (Importer les métadonnées) (Options du compilateur C#) .

    Si je suis le lien sur les références on m'invite à approfondir la notion d'assembly.

     

    Je soupçonne qu'il s'agit de rectifier la compilation d'une assembly dont je n'ai pas les sources, et que je ne suis suis pas encore au bout de mes peines avec ça.

     

    Par ailleurs je relis la procédure conseillée pour migrer d'un site web vers une application web, et mon attention est attirée par la fin de la première étape :

    To open and verify your Visual Studio 2005 Web project

       5.  Verify that your project runs as expected.

     

    La remise en ordre de la plateforme il y a deux semaines avait pris sept heures, elle comprenait la désinstallation de .Net dans l'ordre décroissant des versions, la réinstallation de Visual Studio à partir du CD, puis la réinstallation des versions de .Net au-delà de la 2, dans l'ordre croissant des versions.

     

    Ai-je une chance de trouver une solution qui prenne moins de temps que ça ?

    Bien entendu la restauration système fait partie des solutions qui viennent à l'esprit, c'est vrai que ça serait plus raisonnable que de se trouver pris au dépourvu et de tout réinstaller. Maintenant, si on arrive à redire à Visual Studio quelle version de l'assembly en question utiliser, j'imagine que ça pourrait aller encore plus vite, et éviter d'avoir à refaire toute mise à jour faite dans l'intervalle ?


    • Modifié Gloops samedi 21 août 2010 16:08
    samedi 21 août 2010 14:10
  • Bingo !

    J'ai jeté un coup d'œil là : http://forums.asp.net/t/1033129.aspx

    Alors j'ai tapé
    gacutil -i "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dl"

    et ça a donné ça :
    -------------------
    Microsoft (R) .NET Global Assembly Cache Utility.  Version 2.0.50727.42
    Copyright (c) Microsoft Corporation.  All rights reserved.

    Échec de l'ajout de l'assembly au cache :   Syntaxe du nom de fichier, de répertoire ou de volume incorrecte.
    ------------------
    Quezaco ? Ah oui c'était le fichier source qu'il fallait mentionner en argument ?

    Mais la suite du fil s'est avérée plus concluante, puisqu'en réparant .Net 3.5 SP1 à partir du panneau de configuration, ajout/suppression de programmes, ça m'a remis mon Visual Studio d'aplomb, et que ça a été l'affaire d'une vingtaine de minutes. ça m'intrigue un peu, alors que les messages d'erreur ont explicitement mis en cause la version 2, que ce soit la réparation de la version 3.5 (la dernière) qui soit concluante, m'enfin bon, l'essentiel, c'est que ça marche.

    Après je chercherai comment le faire à partir de la ligne de commandes pour éviter d'avoir à afficher tout le panneau de configuration, ça je suppose qu'il faut le chercher en tapant "dotnetfx35 /?" dans le répertoire de téléchargement. C'est vrai que je me passerais bien d'avoir à le refaire toutes les deux semaines, mais si c'est une histoire de vingt minutes, on arrivera à gérer.

    Après cette réparation, la génération de mon site a pris un sacré petit bout de temps, mais elle a abouti sans erreur.

    En définitive l'apport du passage par un projet de type application web a été indirect, mais il m'a permis de trouver une solution, puisque ce sont les messages d'erreur obtenus à partir de ce type de projet qui m'ont donné l'idée de chercher "recompiler System.EnterpriseServices", et que la première réponse à cette requête a été la bonne.

    Merci donc pour cette sacrée épine en moins dans mon pied.
    • Marqué comme réponse Gloops samedi 21 août 2010 15:57
    samedi 21 août 2010 15:51
  • Bonjour,

    ça m'intrigue un peu, alors que les messages d'erreur ont explicitement mis en cause la version 2, que ce soit la réparation de la version 3.5 (la dernière) qui soit concluante, m'enfin bon, l'essentiel, c'est que ça marche.
    La version 3.5 tourne sur le runtime .NET 2.0. Réparer la version 3.5, consiste à réparer en plus la 3.0 et la 2.0.

    En définitive l'apport du passage par un projet de type application web a été indirect, mais il m'a permis de trouver une solution, puisque ce sont les messages d'erreur obtenus à partir de ce type de projet qui m'ont donné l'idée de chercher "recompiler System.EnterpriseServices", et que la première réponse à cette requête a été la bonne.
    Si votre application n'a pas encore été migré sur ce type de projet, je vous conseille de passer une journée dessus...

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 21 août 2010 16:36
    Modérateur