【问题标题】:Pack C# project to dll or another library将 C# 项目打包到 dll 或其他库
【发布时间】:2011-06-21 06:18:48
【问题描述】:

我有一个包含许多类的 C# 项目。是否可以将此项目(控制台应用程序)打包到库中(可能是 dll 或其他任何东西)并从其他编程语言调用特定类的所有函数?

编辑: 这是代码:

using System;
using System.Text;

命名空间测试 { 课堂节目 { 公共 int aplusb(int a, int b) { 返回 a + b; }

    public void hello()
    {
        Console.WriteLine("Helo world");
    }
}

} 以及项目文件夹中的层次结构: - 特性 - 参考 - 斌 -- 调试 --- 测试.dll --- 测试.exe --- 测试.pdb --- 测试.vshost.exe --- Test.vshost.exe.manifest - 对象 -- x86 ---调试 ----临时PE ----- DesignTimeResolveAssemblyReferencesInput.cache ----- Test.csproj.FileListAbsolute.txt ----- 测试.dll ----- 测试.pdb ----- ResolveAssemblyReference.cache - 程序.cs

我从 bin 和 obj 中检查了 Test.dll。他们是空的

【问题讨论】:

  • 没关系,可能又是C#,但来自其他项目

标签: c# package


【解决方案1】:

当您构建项目时,您会在相应的 bin 文件夹中获得 dll。

您可以通过添加对该 dll 的引用在其他项目中使用该 dll。之后就可以使用它的方法了。

【讨论】:

  • 但它是空的,我用 Dll 查看器查看它并没有显示任何内容
  • 我的意思是 dll 确实存在,但它是空的
  • 你在你的类库中添加了什么函数吗?
  • 你能用.net反射器检查吗
  • 我用两个公共方法(没有main方法)创建了一个测试类,没有编译它,因为如果你选择类库是不可能的。检查 dll - 它是空的
【解决方案2】:

Visual Studio 项目属性 -> 应用程序 -> 输出类型:类库

【讨论】:

  • DLL 位于项目的 bin 或 release 文件夹中。如果它看起来是空的,是因为您的类被定义为私有或内部的。您应该将需要在 dll 外部看到的名称更改为 public。
  • 不,它们是公共的,在 Program 类中我创建了 2 个公共方法只是为了测试,我删除了 main 方法。
  • 我建议您开始一个新项目,使用类库项目模板,并将您的代码复制到公共类中。
  • 我不需要新项目和复制。这个只是为了测试而创建的。我有一个大项目,我想将其转换为 dll,这就是我测试它的原因。
【解决方案3】:

是的,您可以创建一个类库项目。请记住,您正在使用托管代码创建一个 dll,如果您想在例如 c++ 中使用它,您必须这样做 some extra stuff.

【讨论】:

  • 我知道创建类库项目是可以的。问题是在哪里可以从项目(控制台应用程序)创建库?
  • @Sergey 可以,但您必须创建一个额外的项目,并将类库作为其输出类型,并引用与控制台应用程序相同的代码。
【解决方案4】:

您使用 .NET 创建的类库(最终成为 DLL)只能在其他 .NET 应用程序或库中使用,或者 - 如果您选择启用它 - 从 COM 中使用。

据我所知,不可能使用 C# 创建 DLL,然后您可以从非托管应用程序(C、C++ 等)调用其方法。没有所谓的“导出方法”,这就是 DLL 查看器显示它为空的原因。使用 .NET Reflector 或类似的反编译器再次检查,您会看到方法显示出来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多