Можно ли создать DLL, которая содержит другую DLL?
Я работаю над проектом. Задача - создать проект DLL. В этом проекте у меня есть существующая DLL с набором методов. С использованием существующей DLL я могу вызвать несколько методов и создать несколько методов в новой DLL.
Это возможно в C#??
Могу ли я узнать, каковы возможности и методы для создания такого проекта.
Заранее спасибо.
1 ответ
Если вы хотите скрыть эту 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, которая просто использует старую, вы можете просто добавить ссылку. Затем вы можете настроить "Использовать локальное копирование", но вам придется распространять два файла:
И если вы хотите создать " статическую ссылку " просто с помощью компилятора / компоновщика (встроенной в Visual Studio), вам нужно использовать статическую библиотеку ссылок (LIB), а не динамически подключаемую библиотеку (DLL)...
Или вы можете попробовать прочитать " Как связать.DLL статически? ", Который, кажется, дает некоторое руководство (проприетарное программное обеспечение) о том, как это сделать.