.net类“;不是“公司”的成员;类。。即使是这样?

.net类“;不是“公司”的成员;类。。即使是这样?,.net,namespaces,.net,Namespaces,查看一些旧代码,我遇到了一个奇怪的名称空间错误 假设我有两个项目,HelperProject和WebProject。应用程序属性中给出的每个项目的完整名称空间是myEmployer.HelperProject和myEmployer.Web.WebProject web项目中的页面充满了使用helper项目中的类的语句。没有imports/using语句,但有一个对bin中添加的helper项目的引用。以下是一些示例行: myEmployer.HelperProject.StringHelper.

查看一些旧代码,我遇到了一个奇怪的名称空间错误

假设我有两个项目,HelperProject和WebProject。应用程序属性中给出的每个项目的完整名称空间是myEmployer.HelperProject和myEmployer.Web.WebProject

web项目中的页面充满了使用helper项目中的类的语句。没有imports/using语句,但有一个对bin中添加的helper项目的引用。以下是一些示例行:

myEmployer.HelperProject.StringHelper.GetFixedLengthText(Text, "", Me.Width, 11)
myEmploter.HelperProject.Utils.StringHelper.EstimatePixelLength(Text, 11)
但是,以这种方式编写的每一行都会抛出错误“HelperProject”不是“myEmployer”的成员。如果您这样声明:

HelperProject.StringHelper.GetFixedLengthText(Text, "", Me.Width, 11)
HelperProject.Utils.StringHelper.EstimatePixelLength(Text, 11)
一切似乎都很好

在解决方案对象浏览器和bin文件夹中,将显示HelperProject及其完整命名空间myEmployer.HelperProject

我不想改变所有的陈述,而且我怀疑这掩盖了一个更根本的问题。但我不知道发生了什么。有人能给点建议吗

干杯,
Matt

应用程序属性中的命名空间仅适用于创建的新文件。如果您在其中更改命名空间而不更改现有文件,则其命名空间将与文件中指定的命名空间相同。

是否发生命名空间冲突,myEmployer是否是进行调用的命名空间的类或子命名空间。尝试将其中一个引用更改为以下格式:

global::myEmployer.HelperProject.StringHelper.GetFixedLengthText(Text, "", Me.Width, 11)
编辑:

如果您添加下面的using语句,它应该会告诉编译器在这个类myEmploye的上下文中。表示全局::myEmployer,而不是任何其他名为myEmployer的类或名称

using myEmployer = global::myEmployer;

首先,正如ck所说,项目设置中的默认名称空间仅用于在创建新(类)文件时提供名称空间。因此,您应该检查文件中的名称空间是否正确。例如:

namespace myEmployer.HelperProject
{
    public class StringHelper
    {
        public static string GetFixedLengthText(...)
        {}
    }
}
如果这是不同的,例如
名称空间帮助项目
,您将得到错误

如果名称空间正确,则可能有一个局部变量或字段或类似名称,也称为myEmployer。尝试右键单击myEmployer并选择“转到定义”(或按F12)


注意:名称空间的标准大小写是PascalCasing,即MyEmployer.*

Yep,添加全局将删除错误。那么这意味着什么呢?这意味着myEmployer.HelperProject不明确,存在名称空间冲突。如果你用一个解决方案编辑了我的帖子,这样你就不必改变所有的陈述。