2010-08-28 41 views
2

如果您有一个组装标识/名称空间Library.Testing。 然后您创建了另一个程序集,其标识/名称空间为Library.Testing.One Library.Testing.One项目引用Library.Testing组装访问

为什么你必须在Library.Testing.One的课程中使用using Library.Testing;来访问Library.Testing中的任何内容?

例1:

using System; 

namespace Library.Testing.One 
{ 
    // 'Library.Testing' is a reference in this assembly 
    public class foo : Library.Testing.BooBase 
    { 
    } 
} 

这不工作,我得到两个例外

警告财产 'RootNamespace' 1个加载失败。根名称空间的字符串 必须是有效的 标识符。错误2类型或 命名空间名称BooBase'不 在命名空间中 “Library.Testing.One.Library.Testing” (是否缺少程序集 参考?)

例2:

using System; 
using Library.Testing; 

namespace Library.Testing.One 
{ 
    // 'Library.Testing' is a reference in this assembly 
    public class foo : Library.Testing.BooBase 
    { 
    } 
} 

This Works!

+0

将原始代码还原为两个不同程序集中的两个类不会重现该错误。您是否可能在Library.Testing.One程序集中创建了一个名为“Library.Testing.One.Library.Testing”的模糊命名空间的其他类? – GBegen 2010-08-28 01:31:00

+0

我写了这个基于我创建的类库的示例。我在写这个项目时重新创建了这个项目,但我没有收到错误信息。这个问题必须是我不得不通过代码挖掘的东西。谢谢你,如果你摔倒了,我很浪费,我浪费了它。 – Chauncat 2010-08-29 06:42:55

+0

我想通了。这是一个紧凑的框架项目,应用程序部署的目录中有一个下划线。 示例:Testing._ – Chauncat 2010-08-29 07:23:39

回答

1

Library.Testing.One添加“使用”并不会自动将LibraryLibrary.Testing中的所有内容都纳入范围。命名空间似乎是分层的这一事实可能是导致你混淆的原因。

想想,例如,将using System.Data.SqlClient添加到文件中。这并不会自动将SystemSystem.Data中的所有内容都纳入范围。

+0

我同意但'Library.Testing.One'有一个'Library.Testing'的引用。所以我想我会清楚,但我得到那个奇怪的错误,除非我添加'使用Library.Testing.One'。 – Chauncat 2010-08-29 06:35:35