这是我的第一个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
答案 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应该编译没有任何错误。