如何在c#

时间:2017-03-19 11:34:40

标签: c# dll dllimport

这是我的第一个c#trail,我创建了一个dll文件,我想在另一个c#文件中使用它的类,但是当我编译时,我得到了这个错误:

  

错误CS0246:类型或命名空间名称'HelloLib'不能   被发现(你是否错过了使用指令或           装配参考?)

HelloLib.dll:

namespace HelloLib{
    public class Hello{
        public string greeting(){
            return "Hello, World!";
        }
    }
}

MyMain.cs:

using HelloLib;

public class MyMain{
    public static void Main(){
        System.Console.WriteLine(Hello.greeting());
    }
}

我使用CMD命令编译了库:

csc /target:library /out:C:\PATH_TO_DESKTOP\Hello.dll C:\PATH_TO_DESKTOP\Hello.cs

然后我尝试使用以下命令将“MyMain”文件编译为exe:

csc /target:exe /out:C:\PATH_TO_DESKTOP\MyMain.exeC:\PATH_TO_DESKTOP\MyMain.cs

1 个答案:

答案 0 :(得分:1)

使用/ reference或/ r选项编译exe项目时,需要传递程序集的引用路径。

csc /target:exe /out:C:\PATH_TO_DESKTOP\MyMain.exe C:\PATH_TO_DESKTOP\MyMain.cs /r:C:\PATH_TO_DESKTOP\Hello.dll

使用上面的命令你的exe应该得到编译,但是正如有人在上面评论过你试图用类名调用greeting()方法,因为它没有标记为静态方法你的exe编译会抛出错误。要修复它,您需要将greeting()方法(在Hello.dll中)设置为静态或使用“new”运算符创建Hello类的实例,然后在该实例上调用greeting()方法。一旦你做了这个改变,你的exe应该编译没有任何错误。