无法访问其他项目中的公共类,但访问相同的命名空间

时间:2012-10-25 12:43:35

标签: c#

我的解决方案中有两个项目,每个项目都有一个包含公共类的CS文件。由于两个类都在同一个命名空间中,我希望它们能够看到对方。事实并非如此。请参阅下面的设置。

项目Woof1,文件File.CS

namespace MyNameSpace
{
  public class Foo
  {
    // Doesn't compile
    Faa f;
  }
}

Project Woof2,文件File.CS

namespace MyNameSpace
{
  public class Faa
  {
    // Doesn't compile
    Foo f;
  }
}

注意,这两个类都存储在不同目录中具有相同名称的文件中(即不是同一个文件)。

  1. 为什么我不能编译它?
  2. 我该怎么办(除了将课程移到同一个项目中)。
  3. (我只在这个问题上找到了this discussion,但最后这不是我的问题。)

5 个答案:

答案 0 :(得分:6)

  1. 确保引用设置为应该。每个项目都需要引用另一个项目。
  2. 确保在所有项目中的类上设置public限定符。
  3. 确保在所有项目中的枚举中设置public限定符。
  4. 此外,最好您可能希望将enum和其他辅助定义移动到公共项目并将其存储在那里。

答案 1 :(得分:3)

您需要从项目Woof2添加对项目Woof1的引用。

另外,尝试引用彼此并不是一个好主意,因为你引入了循环依赖,使构建成为一场噩梦。如果你摔倒了,你需要这样做,你应该考虑将公共代码分解为一个单独的(第三个)项目。

答案 2 :(得分:2)

在Woof1中,您需要包含对Woof2的引用。 另一件需要注意的是命名空间区分大小写,因此两个命名空间都应该是MyNameSpace。

答案 3 :(得分:0)

您需要从项目Woof2添加对Woof1的项目引用。有关详细信息,请参阅this链接。

答案 4 :(得分:0)

我确实和我在一起。如果dll不合适,可能会出现。在我的情况下,我在工具栏中使用了release选项。确保选择了调试选项