【问题标题】:My class library couldn't be found when I want to use it from another project当我想从另一个项目中使用它时找不到我的类库
【发布时间】:2011-12-23 03:04:22
【问题描述】:

我有一个类库,我想将它用作其他项目的参考。但是,当我尝试在这个库中创建一个公共类的实例时,我无法构建该项目。它说,找不到类型或命名空间 ClassLibName。 (您是否缺少 using 指令或程序集引用?)。我检查了参考并再次添加。我也添加了命名空间。您对这个问题有什么建议吗?

【问题讨论】:

  • 你能提供一些代码来说明这个问题吗?如果没有此上下文,以下两个答案对于您提出的问题都是正确的。

标签: c# class class-library


【解决方案1】:

确保您尝试创建的类的实例在类库中声明为 public

namespace ClassLibName 
{
    public class SomeClass
    {
        ...
    }
}

然后在客户端项目中添加程序集作为参考,然后

using ClassLibName;

...

SomeClass instance = new SomeClass();

【讨论】:

  • @cagin,那么实例化它们不会有任何问题。您是否将using 添加到定义类的命名空间中,如我的回答中所示?
【解决方案2】:

我的类库和其他项目有不同的目标框架。我将它们设置为.Net Framework4,问题就解决了。感谢您的帮助。

【讨论】:

  • 我认为你应该接受一个有帮助的解决方案,而不是回答你自己的问题
【解决方案3】:

也许你的库是用比你的项目更高版本的框架构建的...

如果是这样,如果可能,您必须升级您的项目以构建它...或降级库!

【讨论】:

    【解决方案4】:

    您尝试实例化internal 的类是否有任何机会?这是默认设置:

    // These are equivalent (for a top-level class)
    class Foo
    internal class Foo
    
    // This is what you need
    public class Foo
    

    如果你去掉实例化类的代码,但保留命名空间的using 指令和对程序集的引用,它会编译吗?如果是这样,这表明它确实是特定类的问题,而不是您引用库的方式。

    【讨论】:

    • @cagin:好的,那我回答后半部分的问题呢? using 指令中的命名空间是否绝对正确?
    • 是的,我将命名空间添加到 using 块
    • @cagin:如果你一次只回答我要问的部分问题,这将使这个过程变得更长......如果你保留using 指令但删除该行尝试使用实际的类,它编译了吗?
    【解决方案5】:

    您缺少 using 指令,或者您没有在项目中添加对程序集的引用,或两者兼而有之。

    在解决方案资源管理器中,右键单击引用,单击添加引用,进入浏览,选择其他项目的编译dll。

    例如,如果您的类在命名空间Hello.World 中,您还应该添加

    using Hello.World;
    

    在文件的开头。

    【讨论】:

    • 我做到了,但结果相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多