2017-03-19 42 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應該沒有任何錯誤的編譯。