我已经创建了一个类库并构建了一个dll(发布版本)。然后我在另一个项目中引用了DLL(我已经尝试了几个)。我可以在对象浏览器中看到命名空间和类,我可以声明类的实例,但我不能使用或查看任何方法或属性!没有任何智能感知,并且手动调用这些方法会导致“声明预期”错误。
在类库解决方案中,我有一个引用类库项目的单元测试项目,它可以正常工作(并且所有测试都通过)。
任何人都可以提供指向这里可能出错的指示吗?我过去已经建立了很多dll,并且完全没有引用它们。
**编辑:样本类(你可以看到它非常简单)
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
**更新:刚用现有的解决方案测试了这个dll,它运行正常。是否有新项目的设置?
答案 0 :(得分:3)
检查您为班级,方法和属性提供的范围。它们是公开的,或者如果它们受到保护,你是否继承了这个类?如果该类是抽象的,那么您将无法实例化它的实例。
安德鲁
答案 1 :(得分:1)
没有人笑......
这是因为我试图引用子方法或方法定义之外的dll方法和属性。
我浪费了2个小时。
感谢所有帮助过的人。
答案 2 :(得分:0)
所以你有程序集A,你可以从程序集B(单元测试)调用,但不能从程序集C(生产代码)调用?对我来说听起来很奇怪。我误解了你吗?
您可以尝试逐步将程序集B代码逐步更改为程序集C一步一步,看看它停止工作的位置。