我遇到了在同一解决方案中使用跨多个项目的模块的问题(常规项目和单元测试的测试项目)。我试图遵循http://msdn.microsoft.com/en-us/library/ms182532(v=vs.110).aspx中的示例代码(但使用VB.NET而不是C#)。
所以我有2个项目,ZBank和ZBankTests。 ZBankTests提到了ZBank。 ZBank有一个类,clsAccount(名称空间BankAccount)和一个模块modConstants(名称空间BankConstants)。 clsAccount导入ZBank.BankConstants并可以使用其常量变量。
ZBankTests有一个类clsAccountTests(名称空间ZBank.BankAccount.Tests),它导入ZBank.BankAccount和ZBank.BankConstants。我可以使用BankAccount类,但错误:
"'DebitAmountExceedsBalanceMessage' is not declared. It may be inaccessible due to its protection level."
我还将模块编译成了一个DLL,但是在添加了对它的引用之后,两个项目都没有导入它或使用它的变量(在阅读之后尝试了:Using the same modules in multiple projects)。
模块代码:
Namespace BankConstants
Module modConstants
Public DebitAmountExceedsBalanceMessage As String = "Debit amount exceeds balance"
Public DebitAmountLessThanZeroMessage As String = "Debit amount less than zero"
End Module
End Namespace
答案 0 :(得分:2)
默认情况下,Module
访问级别为Friend
。如果要从项目边界之外使用它,则必须将其显式声明为Public
。
Public Module modConstants
' your constants
End Module
有关详细信息,请参阅Module
statement documentation。