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

C# Discussion :

Comment accéder à une 'class library' à partir d'un projet 'Windows applications' ?


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut Comment accéder à une 'class library' à partir d'un projet 'Windows applications' ?
    Bonjour.
    Je suis nouveau en C#, venant de C++ et Java.
    J'emploie Microsoft Visual C# 2008 Express Ed. et son "WYSYWIG" pour définir un premier 'Windows Form'.
    Je réalise une application d'essai comportant surtout une interface d'utilisateurs.

    J'ai téléchargé une librairie de fichiers sources (de classes et d'interfaces) (de Layout Managers) qui m'intéresse beaucoup et que je voudrais utiliser à partir de mon application C#. J'ai pour cela créé, dans la fenêtre de gestion des projets de 'Visual C# Express', un répertoire de type "class library" à côté de mon projet d'essai de type "Windows Application" (intitulée 'LayoutSource_lo_30'). J'y ai copié tous les fichiers sources de la librairie, j'y ai ajouté un "using" pour les rendre compilables et j'ai activé '(Re)Build'. Je n'ai plus d'objection dans la fenêtre inférieure de 'Error list', pour cette librairie.

    De retour dans le projet d'essai initial. Je l'ai réactivé "Set as startup project". Dans une de mes classes (SelModConf_ConfigJctDb), j'ai fait hériter une des classes de la librairie adjacente (ResizeablePaneResizeablePane):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        class SelModConf_ConfigJctDb : ResizeablePane
    et j'ai placé en début de fichier, parmi les autres "using namespace" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using LayoutSource_lo_30;
    , dans l'espoir de pouvoir atteindre ainsi mes classes sources de librairie.
    Mais quand j'actionne 'Rebuild' pour mon petit projet, le compilateur 'life' souligne en bleu ondulé 'LayoutSource_lo_30' ainsi que 'ResizeablePane'.
    Et cependant, quand j'actionne alors 'Rebuild' de la librairie, les soulignages en bleu ondulé dans ma classe disparaissent. Ils réapparaissent lorsque j'actionne à nouveau le 'Rebuild' pour mon petit projet.

    "The type or namespace name 'LayoutSource_lo_30' could not be found (Are you missing a using directive or an assembly reference ?)" ainsi que
    "The type or namespace name 'ResizeablePane' could not be found (Are you missing a using directive or an assembly reference ?)"

    Comment dois-je procéder pour que depuis mes classes propres, je puis accéder (= faire hériter) des classes situées dans les fichiers sources de mon répertoire de type "class librairy" ('LayoutSource_lo_30') ?

    Connaîtriez-vous par hasard l'endroit dans MSDN qui concerne ce problème ?

    Merci d'essayer de m'aider.

  2. #2
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut.

    Si j'ai bien compris, tu as créé un projet de type Forms , et un autre de type "Class library" dans lequel tu as mis les sources des composants que tu as téléchargé.

    Ton projet Forms va générer un exécutable (comme un ensemble de .class) et ta librairie va générer une DLL (comme un JAR).

    La référence en .Net c'est un peu comme le classpath en Java. Donc, dans l'arborescence de ton projet Forms, tu dois avoir un répertoire "References" : tu fais un clic droit dessus et tu sélectionnes "Add reference". Là tu vas avoir plusieurs onglets :

    • .NET ou COM ça renvoie vers des trucs natifs du framework
    • Projects ça renvoie vers des projets de ta solution (ce que tu dois utiliser dans ton cas), ce qui comme dans Eclipse, te permet lorque tu as modifié ta class library et que tu recompile ton projet Forms les modifications soient automatiquement prises en compte => il te suffit donc de sélectionner ton projet "class library"
    • Browse c'est pour faire référence à des DLLs externes (comme si toi tu n'avais pas téléchargé les sources mais directement la DLL)

    Après ça devrait rouler pour toi. En espérant t'avoir été utile

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut
    Bonjour Eusebe19,
    Oui, ton message résume bien le mien.
    "et ta librairie va générer une DLL (comme un JAR)." : Lorsque j'action '(Re)Buid' ? Ou bien comment, sinon ?

    Dans mon projet de test, j'ai fait 'Add references' > 'Projects' > LayoutSource_lo_30 (ma librairie de classe). J'obtiens cet item en plus dans la liste sous Références.

    Hélas, mes soulignages en bleu ondulé subsistent, dans la classe de mon application faisant appel à une classe de librairie : Tout comme annoncé dans mon message original.

    Merci.

  4. #4
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Citation Envoyé par Chavadam Voir le message
    "et ta librairie va générer une DLL (comme un JAR)." : Lorsque j'action '(Re)Buid' ? Ou bien comment, sinon ?
    Tu peux soit compiler projet par projet en faisant un clic droit puis "Build" sur ces derniers, soit compiler toute ta solution d'un coup en faisant la même action mais sur la solution. Et ta DLL sera effectivement générée après compilation
    Citation Envoyé par Chavadam Voir le message
    Hélas, mes soulignages en bleu ondulé subsistent, dans la classe de mon application faisant appel à une classe de librairie : Tout comme annoncé dans mon message original.
    Au niveau référence ça doit être bon, il doit donc te manquer un using : tu peux l'ajouter à la main si tu connais le namespace par cœur, ou plus simple, tu te rends sur la ligne ou il y a l'erreur et tu clic doit sur un des objets qu'il ne reconnaît pas ("ResizeablePane" par exemple) et tu vas sur "Resolve", il te proposera au choix:

    • d'ajouter en haut de ta classe un using avec le nom du namespace (ex. "using System.IO")
    • d'utiliser l'objet en "absolu" (ex. "System.IO.FileInfo = new FileInfo(...)"

    Ça devrait aller

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut Convivialité de l'IDE 'Visual C# 2008 Express'
    Merci, eusebe19.
    Mais je viens de découvrir le problème :
    Ma librairie 'LayoutSource_lo_30' apparaît comme il faut dans la liste sous 'References' de mon application d'essai. En "double cliquant gauche" sur 'LayoutSource_lo_30', on fait apparaître une fenêtre 'Object Browser' dans la fenêtre de développement principale de l'IDE. Et qu'est-il apparu, sous le projet 'LayoutSource_lo_30', à côté de "{ }" ? "Layout" au lieu de "LayoutSource_lo_30" ! Je suis aller vérifier dans les fichiers sources originaux de la bibliothèque. En effet, le namespace est "Layout" !

    Après correction dans ma classe qui utilise l'une de ces classes de librairie, plus de ligne bleue ondulée !

    C'est dur, la vie d'un débutant qui doit tout découvrir de 'Visual C# 2008 Express Ed.' !

    Mais j'en veux à MSDN car je découvre de plus en plus qu'il répond à nos requêtes sur base de quelques mots avec des listes qui nous noient, et où aucun item n'approche notre problème.

    Une fois encore, merci beaucoup et bon weekend !

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

Discussions similaires

  1. Comment accéder à une classe depuis un programme?
    Par KTARIK dans le forum Général Python
    Réponses: 1
    Dernier message: 02/06/2014, 16h48
  2. Réponses: 3
    Dernier message: 05/12/2012, 03h26
  3. Comment trouver une classe a partir d'un dll ?
    Par Battosaiii dans le forum C++
    Réponses: 3
    Dernier message: 20/05/2008, 11h55
  4. [VB.Net] Comment accéder à une propriété de sous-classes ?
    Par druidev dans le forum Windows Forms
    Réponses: 13
    Dernier message: 05/09/2006, 15h14
  5. [C++.Net] Comment créer une librairie à partir d'un projet ?
    Par guillaume16 dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 30/06/2006, 16h38

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