【问题标题】:Is it possible to create a DLL which contains another DLL?是否可以创建一个包含另一个 DLL 的 DLL?
【发布时间】:2015-07-14 22:56:39
【问题描述】:

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

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

【问题讨论】:

  • 像一个DLLception...?
  • 您是想在运行时实际创建方法,还是只在现有 DLL 上调用方法?如果需要,您当然可以将另一个 DLL 作为资源嵌入并在运行时提取和加载它。就目前而言,这个问题有点不清楚。请注意,如果您澄清任何事情,它最终不会太宽泛......
  • 这绝对是可能的。请提供更多信息 - 您使用的是什么 IDE?您是否希望 Existing DLL 被“隐藏”在生成的 .dll 中,还是可以将其作为项目输出的一部分?
  • 是的。您可以使用 ILMerge 工具将现有的 DLL 合并到一个文件中。更多信息codeproject.com/Articles/9364/….
  • IDE 是 Visual Studio 2008。DLL 可能隐藏在我们生成的 dll 中。我正在使用 C# 代码。

标签: c# dll netmodules


【解决方案1】:

如果您想将该 DLL 隐藏在您自己的 DLL 的内容中,您可以简单地将其放入资源中。从资源的角度来看,DLL 与其他文件一样只是一个文件,您只需将其添加到program resources 和您需要的drop the file 即可。

但是,这将禁止您使用隐式链接,您必须link the DLL explicitly。 MSDN 已经提供了a quite reasonable tutorialhere

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,只使用 旧的,您可以只使用 Add Reference。然后你可以设置"Use Copy Local",但是你必须分发两个文件:


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

或者您可以尝试阅读“How to link a .DLL statically?”,它似乎提供了一些关于如何执行此操作的指导(专有软件)。

【讨论】:

  • 主要问题是我需要使用现有项目创建一个 DLL 项目。我想通过引用来使用我项目中现有的一个。你能告诉我如何通过在 C# 中迁移现有的 DLL 创建一个 DLL。??
  • 老大我没有“旧 DLL 项目”。我只有一个DLL。我正在创建一个新的 DLL 项目。增强某些功能并使用旧 DLL 的现有功能创建新 DLL。
  • 非常感谢....但我已经参考了该页面。我通过创建一个网络模块完成了以下方法。但它显示了一些错误。这就是为什么我怀疑我的路径是否正确。
猜你喜欢
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2012-02-16
  • 1970-01-01
相关资源
最近更新 更多