【问题标题】:DLL reference including all namespaces?包括所有命名空间的 DLL 引用?
【发布时间】:2017-05-01 15:23:36
【问题描述】:

我有一个输出类库 (.DLL) 的项目 - 但我遇到了一个问题,它只导出默认命名空间中定义的类的信息。有没有办法告诉 VisualStudio 将所有命名空间输出到 DLL 中,而不仅仅是默认的?

该项目的默认命名空间为“CALWrap”。然后,基本上相当于:

namespace CALWrap
{
    public class CALContentManager : ContentManager {}
}

// ... meanwhile, in a linked .cs file elsewhere in the code:

namespace Common
{
    public class ContentManager {}
}

我的问题是,我需要在构建 DLL 时也导出 Common.ContentManager,但因为它位于不同的命名空间中,所以它不包含在 DLL 中:当我在单独的项目中引用 DLL 时,我可以' t 访问该类。

【问题讨论】:

  • ContentManagerCALContentManager 是同一个 DLL 的一部分?
  • 不知道怎么回答。生成 DLL 的项目具有两个类的 .cs 代码。我假设 ContentManager 在 DLL 输出文件中的某个位置,但它没有暴露/可见?我尝试在其中一个主要的 .cs 文件中进行测试,我创建了一个新的命名空间并创建了一个测试类。被另一个 VS 项目引用时无法访问。当我将命名空间改回 CALWrap 时,它就可以访问了。
  • 奇怪...您是否尝试使用定义它的命名空间来访问该类?例如Common.ContantManager?
  • 你知道吗,我想你可能已经解决了这个问题。我将我的最终 .DLL 称为“CALWrap”。所以当我在另一个项目中引用它时,我愚蠢地输入了“CALWrap....”,以为我指的是 DLL...但我点击的是 namespace,不是我?我要回去了,看看能不能直接打命名空间。
  • 是的。这就是问题所在。 Chetan,你想发表一个答案,以便我给你一些积分吗?

标签: c# .net dll namespaces


【解决方案1】:

您确定 ContentManagerCALContentManager 两个类是同一个 DLL 的一部分吗?

如果它们是同一个 DLL 的一部分,您应该能够使用适当的命名空间访问它们。

程序集中的命名空间不必与程序集名称相同。

看起来您正在尝试从命名空间 CALWrap 访问 ContentManager 类,而您应该尝试使用命名空间 Common 访问它。

这应该可以帮助您解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多