【发布时间】:2011-10-06 15:13:49
【问题描述】:
我在我的项目中添加了一个 DLL。 DLL 包含命名空间test.security。现在, test.security 无法识别。这是为什么呢?
我在其他项目中使用这个DLL,没有其他问题。
【问题讨论】:
-
您是否添加了对 DLL 的引用?
标签: c# namespaces
我在我的项目中添加了一个 DLL。 DLL 包含命名空间test.security。现在, test.security 无法识别。这是为什么呢?
我在其他项目中使用这个DLL,没有其他问题。
【问题讨论】:
标签: c# namespaces
1.删除引用并重新添加 2.关闭解决方案并重新打开它 3.创建一个新的解决方案并添加所有旧的解决方案
【讨论】:
检查您的 DLL、s .NET 版本和宿主项目的 .网络版本。很可能存在不同,并且在您的特定情况下会以某种方式产生问题。
问候。
【讨论】:
这通常取决于那个命名空间的in;例如,如果里面什么都没有,那么命名空间实际上并不存在。
您也可能缺少一些其他依赖项,这意味着编译器不能使用(直到添加引用)该命名空间中的任何类型(例如,如果该命名空间中的类型都依赖于来自 Another.dll 的某些类型,而您还没有引用 Another.dll)。
您可能引用了错误的版本 dll,并且您引用的版本没有该命名空间。
有可能编译器已经告诉你一个参考问题,这意味着它不能使用它 - 查看错误/警告列表。例如,它可能是物理上丢失的文件、.NET 版本不匹配或强命名问题,这意味着它无法使用引用。
【讨论】:
您是否使用 客户资料 作为项目目标?考虑这种情况:
项目 A -> 项目针对 .NET Framework 4.0
项目 B -> 项目针对 .NET Framework 4.0 客户端配置文件
项目 A 被 项目 B 引用。 Project A 中的命名空间在 Project B 中无法识别。
如果场景匹配,这是由于目标不匹配。客户端配置文件支持完整框架的 BCL 子集。如果一个程序集依赖于使用完整的框架(例如需要来自 System.Web 的类型等),那么它将无法从仅支持客户端配置文件的程序集中使用。
简单的解决方案,将 Project B 更改为 .NET Framework 4.0(不是 Client Profile)。
【讨论】:
派对迟到了,但显然这是在最近的搜索中出现的,所以这是为了帮助登陆这里的新手。这里还有一件事要验证。
引自 Dummy01 对他对这个问题的回答的评论:
Pack C# project to dll or another library
“DLL 位于项目的 bin 或发布文件夹中。如果它看起来是空的,是因为您的类被定义为私有或内部。您应该将需要在 dll 之外看到的名称更改为公共。”
【讨论】:
我也遇到过这个问题。在我的情况下,我尝试删除引用,重建引用的项目,然后再次添加它,但问题仍然存在。
我的问题是目标项目命名空间中的类不是公共的。这意味着该命名空间中没有可访问的内容,因此它实际上并不存在。
将它们设置为公共访问级别解决了这个问题。希望它可以帮助某人! :)
【讨论】:
我遇到了同样的问题。我将控制台应用程序更改为项目属性中的类库。这样就解决了。
【讨论】:
我想为此添加一个原因,在 VB.NET 中找到(在我的例子中是 Visual Studio 2010;你的可能会有所不同)。
例如,我有两个项目:P1 和 P2。
P1 是应用程序,P2 是类库。
规定:
但是,在 P1 中,不能声明“Imports P2...”表达式,也不能使用 P2 中的任何共享方法。就好像命名空间 P2 不存在一样,尽管引用在那里。
原因:P2 已从代码转换为单独的程序集,其中所有方法都包含在 VB.NET 公共模块中。但是,“模块”没有重新键入为公共类。
没有任何错误,但在创建公共类之前,P2 命名空间对 P1 完全不可用。
值得注意的是,实际上没有必要将原始模块转换为类。只需在 P2 命名空间中声明 一些 Public Class(即使它是空的),然后在该 Public Module 中找到的所有方法都可用。
【讨论】: