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

Dotnet Discussion :

Créer une dll enregistrable avec c:\WINDOWS\system32\regsvr32.exe


Sujet :

Dotnet

  1. #1
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut Créer une dll enregistrable avec c:\WINDOWS\system32\regsvr32.exe
    Salut,

    J'ai un site en ASP tout court.
    On développe avec VS 2005.
    En ASP, il est assez pratique de disposer de DLL instanciables avec l'instruction "Server.CreateObject". Ces objets doivent au préalable être enregistrées sur le serveur avec "regsvr32.exe".
    Malheureusement, je ne trouve pas comment en créer avec VS2005.
    Avez-vous une idée?

    Merci.

    Immo

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu peux marquer l'assembly comme étant ComVisible, c'est un attribut de l'assembly. C'est aussi paramétrable dans les propriétés du projet en question.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Je me demande si Immobilis ne souhaite pas plutôt savoir comment on construit un wrapper (ici et MSDN).

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Hum je serais plutôt du même avis que SaumonAgile....

  5. #5
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Merci de vos réponse.
    Sans trop me poser de question, j'ai créé un projet de bibliothèque de classes avec uniquement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace ClassLibrary1
    {
        public class Class1
        {
            protected bool ReturnTrue()
            {
                return true;
            }
        }
    }
    J'ai coché: "Rendre visible par COM", puis signé l'assembly, puis généré, puis tenté d'enregistrer la DLL. Je reçois un message d'erreur: "le point d'entrée DllRegisterServer est introuvable."

    Avez-vous une idée?
    Je vais essayer la solution de BCmDev. D'après le premier lien, cela correspond à ce que je souhaite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET OBJMSGBOX = Server.CreateObject("CCWComponent.CCWClass")
    A+

  6. #6
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Re,

    J'ai mis la DLL dans le GAC. Avec la signature ça passe. Par contre l'instanciation ne marche pas. Qd je "clic droit" dessus je peux la désinstaller. C'est donc que à priori elle devrait marcher, non?

    Sur certains forum ils disent d'utiliser "regasm" plutôt que "regsvr32". Qu'en pensez-vous?

    A pluche.

    Immo

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Les liens que je t'ai fourni ne t'ont pas aidé (notamment pour regasm) ?

  8. #8
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Je suis sur Vista. C'est un peu chit.

    J'ai pas vraiment l'habitude d'installer des composants dans cet environnement (ni sur XP d'ailleurs).
    Au moment de la génération du projet, j'obtiens "ClassLibrary1.dll" et "ClassLibrary1.tlb". En toute logique je ne devrais plus avoir qu'à la mettre dans le GAC, non?
    Sous XP on peut faire un glisser déplacer et ça roule. Sous Vista tintin! Je ne trouve même pas l'entrée de la console "Composants" pour le faire... J'ai lu sur un forum qu'il fallait faire un projet de déploiement pour installer une dll dans le GAC.

    J'suis un bille sur ce coup.

    Un ptio coup de main serait bienvenu. Si qqn peu essayer chez lui et me dire ça me rendrait bien service.

    Merci d'avance.

    A+

  9. #9
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    J'ai trouvé. Il suffit de cocher la case "Inscrire pour COM Interop" dans l'onglet "générer" des propriétés du projet.
    Ensuite, glisser déplacer la DLL générée en mode "Release" dans le GAC et ça marche. Par contre, ça c'est sur mon PC du boulot qui est en XP. Il faut encore que je trouve comment installer le composant sous Vista.

    Si qqn sait.

    Apluche

  10. #10
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Bon ben c'est ok.
    Ne pas oublier de lancer VS en tant qu'administrateur... Et puis ajouter ce petit bout de code dans le "post-build" pour installer la dll dans le GAC directement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    call "%VS80COMNTOOLS%\vsvars32.bat" > NULL 
    gacutil.exe /if "$(TargetPath)"
    http://learn.iis.net/page.aspx/168/a...s7-developers/

    En fait tout se résume à cocher deux cases...

    A+

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Question du même ordre
    Bonjour,

    J'essaie de faire quelque chose de très similaire.
    Je crée un projet très simple en c#, comme toi.

    J'ai essayé les deux façons:
    - comme dans le post avec signing, post buil event , ...
    - à la mano comme dans les post de dnzone et msdn

    les opérations semblent bien se passer mais quand depuis une application
    office je fais "objet insérer" ou via l'icon d'ajout de controles
    je ne vois pas l'objet censé être enregistré

    Une idée ?

    Merci

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 67
    Points : 40
    Points
    40
    Par défaut
    Peut être çà pourra aider quelques personnes, j'ai trouve comment ajouter une librairie au GAC sous Vista, alors que le glissé déposé renvoi l'erreur "accès refusé".

    1. Il faut donc ouvrir une invte de commande en administrateur, clic droit sur cm.exe, Exécuter en tant qu'administrateur
    2. Apres il faut se positionner dans le répertoire contenant l'exécutable gacutil.exe, moi il je l'ai enfin trouvé dans "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\"
    3. Lancer la commande suivante gacutil /i [chemin de votre libraire]\votreLibrairie.dll


    Cela a fonctionné pour moi, j'espère que pour vous aussi.

    PS: je suis sous Vista 64bits, framework 3.5 et Visual Studio 2008 (64bits edition)

  13. #13
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 419
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 419
    Points : 20 577
    Points
    20 577
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    En ASP, il est assez pratique de disposer de DLL instanciables avec l'instruction "Server.CreateObject". Ces objets doivent au préalable être enregistrées sur le serveur avec "regsvr32.exe".
    Les objets COM ( Component Object Model ) ce sont des dll programmées en C++ (avec Visual C++ ->projet ATL) , possédant 4 interfaces.
    Avant VB6 permettait cela aussi.
    .NET n'est pas destiné à faire des objets COM ce n'est pas logique de le faire.
    .NET est le successeur de COM architecture plus homogène que les anciennes je ne comprends pas pourquoi vouloir repasser par des objets COM

  14. #14
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    .NET n'est pas destiné à faire des objets COM ce n'est pas logique de le faire.
    Ben oui, mais faut parfois faire avec un existant un peu lourd. Comme je dis au début, je bosse sur un site ASP3 vbscript.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. créer une dll ressource avec vs 2005 ?
    Par trent94 dans le forum Débuter
    Réponses: 0
    Dernier message: 22/02/2010, 15h02
  2. [Article] Créer une Dll standard avec VB6
    Par medkarim dans le forum Vos contributions VB6
    Réponses: 1
    Dernier message: 29/06/2009, 08h19
  3. probleme avec c:windows/system32/shutdown.exe
    Par islaine dans le forum Sécurité
    Réponses: 1
    Dernier message: 28/01/2009, 10h46
  4. [Lazarus] Comment créer une DLL avec Lazarus
    Par rajawi00 dans le forum Lazarus
    Réponses: 1
    Dernier message: 19/07/2007, 14h49
  5. Créer une dll Windows (de stockage ressource) ?
    Par kidpaddle2 dans le forum Windows
    Réponses: 8
    Dernier message: 17/09/2006, 16h40

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