1

我有一个用 C# 编写的程序集。在其中,我有许多具有静态函数等的静态类。从另一个 c# 项目中引用这些函数就可以了,但是如果我尝试在 VB.NET 项目中使用它们,则这些类在以下位置不可用/可见所有,即使它们出现在对象浏览器中,只要我不引用所述类,项目就会编译/运行。

这是我在 C# 中定义类的方式,例如...

namespace Tools
{
    public static class MyTools
    {
        public static int SumNumber(int n1, int n2) { return n1 + n2; }
    }
}

尝试在 VB 中使用该类将导致错误:

'MyTools' is not declared. It may be inaccessible due to its protection level.

尝试使用完全限定名称“Tools.MyTools.SumNumber....”将导致完全相同的错误消息。

我已经检查过,C# 程序集和 VB 项目都针对 .NET 4.5 我在这里缺少什么?

4

2 回答 2

1

我清除了项目属性中的“根命名空间”选项,现在一切正常。保留它会导致不明显的命名空间嵌套使程序员感到困惑。

于 2013-07-29T15:04:59.653 回答
0

此问题通常是由于您在尝试使用该类时未使用正确的命名空间。从 C# 代码中获取完整的命名空间,然后在 VB 端调用它时使用该命名空间来完全限定类名。如果可行,您应该在项目或文件级别导入该命名空间,或者重新设计命名空间以便于访问。

如果这仍然不起作用,请确保您从 VB 项目中正确引用了 c# 项目。确保您没有意外引用输出 dll 的副本或其他陈旧文件。

于 2013-07-29T14:43:20.077 回答