3

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

Woof1 项目,文件 File.CS

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

Woof2 项目,文件 File.CS

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

注意,两个类都存储在同名不同目录的文件中(即不同的文件)。

  1. 为什么我编译不出来?
  2. 我能做些什么(除了将类移动到同一个项目)。

(我只找到了关于这个主题的讨论,但最后这不是我的问题。)

4

5 回答 5

6
  1. 确保按预期设置引用。每个项目都需要参考其他项目。
  2. 确保在项目中的所有public上设置限定符。
  3. 确保为项目中的所有枚举设置public限定符。

此外,最好将您enum的 s 和其他辅助定义移动到一个公共项目并将它们存储在那里。

于 2012-10-25T13:36:45.003 回答
4

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

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

于 2012-10-25T12:47:12.793 回答
2

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

于 2012-10-25T12:49:07.427 回答
0

您需要从项目 Woof2 添加对 Woof1 的项目引用。请参考链接以获取更多信息。

于 2012-10-25T12:50:29.537 回答
0

我确实发生在我身上。如果 dll 不是正确的构建,它可能会出现。在我的情况下,我使用工具栏中的发布选项。所以请确保选择了调试选项

于 2013-12-31T06:55:04.923 回答