引用已添加但无法识别名称空间

时间:2011-07-16 05:46:26

标签: c# namespaces

我在项目中添加了一个DLL。 DLL包含名称空间test.security。现在,test.security无法识别。这是为什么?

我在其他项目中使用此DLL,我没有其他问题。

8 个答案:

答案 0 :(得分:19)

您使用客户端资料作为项目目标吗?请考虑以下情况:

项目A - >项目目标是.NET Framework 4.0

项目B - >项目目标是.NET Framework 4.0客户端配置文件

项目A 项目B 引用。 项目B 中无法识别项目A 中的命名空间。

如果方案匹配,则这是由于目标不匹配造成的。 Client Profile支持完整框架的BCL的子集。如果程序集依赖于使用完整框架(例如需要来自System.Web的类型等),那么它将不能用于仅支持Client Profile的组合。

轻松解决方案,将 Project B 更改为.NET Framework 4.0(而不是客户端配置文件)。

答案 1 :(得分:12)

它通常取决于该命名空间中 的内容;例如,如果没有任何内容,则命名空间实际上不存在

您也可能缺少其他依赖项,这意味着编译器不能使用(直到添加引用)该命名空间中的任何类型(例如,如果该命名空间中的类型都依赖于来自Another.dll的某些类型,并且您没有引用Another.dll)。

您可能引用了dll的错误版本,并且您引用的版本没有该命名空间。

编译器可能已经告诉你有关引用问题,这意味着它无法使用它 - 请查看错误/警告列表。例如,它可能是物理上缺少的文件,或.NET版本不匹配,或强命名问题,这意味着它无法使用该引用。

答案 2 :(得分:5)

1.删除参考并再次添加 2.关闭解决方案并重新打开 3.创建一个新的解决方案,并在其中添加所有旧解决方案

答案 3 :(得分:4)

参加派对的方式很晚,但显然这是在最近的一次搜索中出现的,所以这是为了帮助那些登陆这里的新手。还有一件事需要验证。

引用Dummy01评论他对这个问题的回答:

Pack C# project to dll or another library

" DLL位于项目的bin或release文件夹中。如果它看起来是空的,那是因为您的类被定义为私有或内部。您应该将需要在dll之外看到的名称更改为公开。"

答案 4 :(得分:3)

检查您的DLL,.NET版本和主机项目。 NET版本。最可能的是,它会有所不同,并且在某种情况下它会在您的具体案例中产生问题。

问候。

答案 5 :(得分:2)

我也遇到了这个问题。在我的情况下,我尝试删除引用,重建引用的项目,然后再次添加它,但问题仍然存在。

我的问题是目标项目命名空间中的类不公开。这意味着该命名空间中没有任何内容可访问,因此它并不存在。

将它们设置为公共访问级别可以解决问题。希望它可以帮到某人! :)

答案 6 :(得分:1)

我遇到了同样的问题。我将控制台应用程序更改为项目属性中的类库。修好了。

答案 7 :(得分:0)

我想在VB.NET(Visual Studio 2010,在我的情况下,你的可能会有所不同)中找到一个原因。

举个例子,我有两个项目:P1和P2。

P1是一个应用程序,P2是一个类库。

规定:

  • P1到P2
  • 有一个参考
  • P1和P2都针对.NET 4.0(完整,而不是客户端)
  • P1和P2都针对x86(不是很重要)
  • 有0个错误和0个警告

然而,在P1中,无法声明“进口P2 ......”。表达式,也不使用P2中的任何共享方法。就像命名空间P2不存在一样,尽管引用就在那里。

原因:P2已从代码转换为单独的程序集,其中所有方法都包含在VB.NET公共模块中。但是,'模块'没有被重新打成公共类。

没有任何错误,但在创建公共类之前,P2名称空间完全不可用于P1。

值得注意的是,实际上并不需要将原始模块转换为类。只需要在P2命名空间中声明 某些 公共类(即使它是空的),然后在该公共模块中找到的所有方法都可用。