2009-10-15 3 views
0

J'ai créé une bibliothèque de classes et construit une DLL (build release). J'ai ensuite référencé la DLL dans un autre projet (j'en ai essayé plusieurs). Je peux voir l'espace de noms et les classes dans le navigateur d'objets et je peux déclarer des instances des classes mais je ne peux pas utiliser ou voir l'une des méthodes ou propriétés! il n'y a pas d'IntelliSense et appeler les méthodes manuellement entraîne une erreur "Déclaration attendue".Pourquoi ne puis-je pas accéder aux méthodes/propriétés de la bibliothèque de classes lorsque je suis référencé en tant que DLL?

Dans la solution de bibliothèque de classes, j'ai un projet de test unitaire faisant référence au projet de bibliothèque de classes qui fonctionne correctement (et tous les tests réussissent).

Quelqu'un peut-il fournir des indications sur ce qui pourrait mal se passer ici? J'ai construit beaucoup de dll dans le passé et je n'ai eu aucun problème à les référencer du tout.

** EDIT: classe Sample (comme vous pouvez le voir est très simple)

Public Class NTSCurrency 
    Implements IComparable 

    Public Sub New() 

    End Sub 

    Public Sub New(ByVal code As String, ByVal name As String) 
     _Code = code 
     _Name = name 
    End Sub 

    Private _Code As String 
    Private _Name As String 

    Public Property Code() As String 
     Get 
      Return _Code 
     End Get 
     Set(ByVal value As String) 
      _Code = value 
     End Set 
    End Property 

    Public Property Name() As String 
     Get 
      Return _Name 
     End Get 
     Set(ByVal value As String) 
      _Name = value 
     End Set 
    End Property 

    Public Overrides Function ToString() As String 
     Return Me.Name 
    End Function 

    Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo 
     Dim cur As NTSCurrency = CType(obj, NTSCurrency) 
     Return Name.CompareTo(cur.Name) 
    End Function 

End Class 

** Mise à jour: Il suffit de tester cette dll avec une solution existante et il fonctionne très bien. Y a-t-il un cadre quelque part pour de nouveaux projets?

Répondre

1

rire ... Personne

C'était parce que je voulais faire référence aux méthodes dll et propriétés en dehors d'une définition de sous ou méthode.

2 heures de vie perdues.

Merci à tous ceux qui ont aidé.

+0

Ha ha ha! Oh, désolé - je ne pouvais pas m'en empêcher ... Ne vous inquiétez pas, je pense que nous avons tous été là. Même Raymond Chen fait des choses comme ça. http://www.google.co.uk/search?q=%22old+new+thing%22+%22not+my+finest+hour%22+site%3Amsdn.com – MarkJ

3

Vérifiez la portée que vous avez donnée à votre classe, vos méthodes et propriétés. Sont-ils publics ou, s'ils sont protégés, héritez-vous de la classe? Si la classe est abstraite, vous ne pourrez pas en instancier une instance.

Andrew

+0

Je suppose également qu'il n'y a aucun membre public dans ces classes. – Groo

+0

Toutes les classes/propriétés/méthodes, etc. sont des propriétés. Il n'y a pas d'héritage (ou MustInherit, Protected etc.). Baffling ... – Simon

0

Vous avez donc un assemblage que vous pouvez appeler à partir de l'assemblage B (tests unitaires), mais pas de l'ensemble C (code de production)? Cela me semble bizarre. Est-ce que je t'ai mal compris?

Vous pouvez essayer de changer progressivement le code B de l'assemblage dans l'assemblage C un petit pas à la fois et voir où il s'arrête de fonctionner.

Questions connexes