【问题标题】:how to use library in c#如何在c#中使用库
【发布时间】:2017-03-19 11:34:40
【问题描述】:

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

错误 CS0246:类型或命名空间名称“HelloLib”不能 被发现(您是否缺少 using 指令或 汇编参考?)

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

【问题讨论】:

  • 修复此错误后,您将收到另一个错误。将您的 greeting 方法设为静态。
  • @M.kazemAkhgary 如果我不想将此方法设为静态,如何创建该类的实例?
  • 使用 Hello hello = new Hello();
  • 你为什么不使用 Visual Studio?它有免费的 Community 和 Express 版本。

标签: c# dll dllimport


【解决方案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 应该会被编译而不会出现任何错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2020-02-10
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多