2

我正在做一个项目。任务是创建一个 DLL 项目。在那个项目中,我有一个带有一组方法的现有 DLL。通过使用现有的 DLL,我可以调用一些方法并在新的 DLL 中创建一些方法。

这在 C# 中可能吗?创建这样一个项目的可能性和方法是什么?

4

1 回答 1

4

如果您想将该 DLL 隐藏在您自己的 DLL 的内容中,您可以简单地将其放入资源中。从资源的角度来看,DLL 和其他文件一样只是一个文件,您可以简单地将其添加到程序资源中,然后将文件拖放到您需要的地方。

但是,这将禁止您使用隐式链接,并且您必须显式链接 DLL。MSDN 已经和这里提供了一个相当合理的教程

using System;
using System.Reflection;

public class Asmload0
{
    public static void Main()
    {
        // Use the file name to load the assembly into the current 
        // application domain.
        Assembly a = Assembly.Load("example");
        // Get the type to use.
        Type myType = a.GetType("Example");
        // Get the method to call.
        MethodInfo myMethod = myType.GetMethod("MethodA");
        // Create an instance. 
        object obj = Activator.CreateInstance(myType);
        // Execute the method.
        myMethod.Invoke(obj, null);
    }
}

如果您想创建自己的 DLL,只使用旧的,您可以添加引用。然后你可以设置"Use Copy Local",但你必须分发两个文件:

复制本地 Visual Studio 屏幕截图


如果你想简单地通过编译器/链接器(内置到Visual Studio)来制作“静态链接”,你需要使用静态链接库(LIB)而不是动态链接库(DLL)......

或者您可以尝试阅读“如何静态链接 .DLL? ”,这似乎提供了一些关于如何执行此操作的指导(专有软件)。

于 2015-05-05T09:47:10.473 回答