2017-03-19 39 views
-2

这是我的第一个C#线索,我创建了一个DLL文件,我想在另一个C#文件中使用它的类,但是当我编译我得到这个错误:如何在C#中使用库

error CS0246: The type or namespace name 'HelloLib' could not be found (are you missing a using directive or an assembly reference?)

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 
+0

修复此错误后,您将收到另一个错误。使你的“问候”方法静态。 –

+0

[csc.exe引用外部.dll文件]的可能重复(http://stackoverflow.com/questions/10722832/csc-exe-reference-external-dll-file) – ganchito55

+0

@ M.kazemAkhgary如果我不想要为了使这个方法是静态的,我如何创建一个类的实例? – Mohammad

回答

1

您需要通过装配的参考路径,同时使用/引用或/ 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文件应该得到但作为编译有人以上,您正试图调用的问候()方法的类名和自其没有被标记为静态方法的exe文件汇编将抛出错误评论。要修复它,您需要使用greeting()方法(在Hello.dll中)作为static或使用“new”运算符创建Hello类的实例,然后在该实例上调用greeting()方法。一旦你做了这个改变,那么你的exe应该没有任何错误的编译。