Tengo 4 dlls. Pero quiero tener 1 dll único que contendrá el código de los 4 de estos dlls. Traté de agregar un proyecto y copiar pegar todo mi código existente en un proyecto, pero no pude.¿Cómo combinar 2 o más conjuntos C# en 1 biblioteca?
Respuesta
Tener una mirada en ILMerge
ILMerge es una utilidad para la fusión de varias NET en un ensamblado de .NET sola .
cómo usar eso ? – Javidan
@Javidan ¿Por qué no quieres simplemente embeber tus dlls como recursos en un dll? No necesitará tocar ensamblajes, ya que pueden estar firmados, y es necesario renunciar al ensamblaje resultante después de la fusión en el nivel IL. –
No sé qué hacer.He instalado ilmerge, pero no pude usar.Y no sé cuál es el método cómodo y seguro para combinar. – Javidan
Puede utilizar ILMerge utilidad
O puede embed the dlls you want to merge as resources
Aquí el ejemplo de código:
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
};
Enlace en una publicación. –
Siempre he tenido muchos problemas al intentar cargar archivos DLL incrustados ... ha pasado un tiempo, pero el problema que tenía IIRC era que, incluso con 'Load (byte [])', se intentó cargar el ensamblado desde el disco. –
@pst No hay ningún problema con la carga de ensamblados, ya que puede cargarlo en su propio dominio de aplicación y controlar el acceso y las versiones manualmente sobre él. Y sí, los ensamblados mientras están cargados en el dominio de la aplicación, no pueden volver a cargarse desde el disco o reescribirse por otro ensamblaje, ya están cargados en la memoria. Es por diseño. –
Hay una herramienta de MS: ILMerge
- 1. Cómo filtrar y combinar 2 conjuntos de datos en C#
- 2. En C++, ¿qué es más rápido? (2 * i + 1) o (i << 1 | 1)?
- 3. Combinar múltiples conjuntos de filas en SPARQL
- 4. Java fusionar 2 colecciones en O (1)
- 5. Combinar dos (o más) PDF's
- 6. Biblioteca de imágenes de Python: ¿cómo combinar 4 imágenes en una cuadrícula de 2 x 2?
- 7. En Javascript, ¿por qué [1, 2] == [1, 2] o ({a: 1}) == ({a: 1}) es falso?
- 8. ¿Cómo 'unir' 2 o más DataTables en C#?
- 9. ¿Cómo cambiar entre 2 conjuntos de funciones en C++?
- 10. ¿Cómo combinar 2 iteradores en Scala?
- 11. matlab - cómo combinar/entrelazar 2 matrices?
- 12. ¿Cómo combinar 2 listas usando LINQ?
- 13. Combinar conjuntos de archivos utilizando Ant
- 14. ¿Cómo combinar más de dos listas genéricas en C# Zip?
- 15. 2 Seleccione o 1 consulta de unión?
- 16. Combinar elementos de múltiples conjuntos en un solo conjunto
- 17. Combinar 2 archivos GetText
- 18. ¿Cómo combinar subcampos en PHP más fácilmente?
- 19. Combinar 2 columnas en 1 columna muchas veces en un gran conjunto de datos en I
- 20. ¿Puedo "combinar" 2 regex con una lógica o?
- 21. Cómo simular tuplas y conjuntos en C#?
- 22. ¿Cómo combinar los conjuntos de cambios TFS programáticamente?
- 23. Fusionar o combinar por nombres de filas
- 24. Cómo combinar columnas de 2 bits
- 25. ¿Cómo combinar las columnas de las tablas 2 en 1 sin usar JOIN
- 26. 1 + 1/2 + 1/3 + --- + 1/n =?
- 27. CSS - Bootstrap: menos de 767px viewports 2 tramos (o más) por filas en lugar de 1
- 28. C++: ¿y a [2] - & a [1] ==?
- 29. Selenium 1 vs 2
- 30. ¿Cómo pueden 2 diccionarios de Python convertirse en 1?
agregarlos como una recursos, use el Explorador de soluciones, abra las propiedades del proyecto y agregue ensambles requeridos como recursos binarios –
Estaba haciendo la Biblioteca de clases (cuadros de diálogo comunes) .Pero encontré algunos de ellos, pero esos también están en el proyecto de la biblioteca de la clase. Los agregué como proyecto existente a mi PROYECTO (biblioteca de clases) .Y cuando construyo y quiero úselos debo agregar cada uno a las referencias – Javidan
Agregue los refereces a estas DLL para proyectar, pero en la sección Refenced assemblies del proyecto, apúntelos y elija en Property Editor los ensambles a los que hace referencia "Copy Local: False, Embed Types: False", luego simplemente cárguelas como de costumbre, desde el recurso incrustado en la sección Aplicación justo antes de la llamada al método Application.Run(), donde estos ensambles hacen referencia en su ensamblaje principal. De todos modos, puede hacer referencia a ensamblados en el proyecto en tiempo de diseño y no todos copiarlos en En su lugar, la carpeta de salida de ensamblaje se almacena como un recurso en una carga de ensamblaje cuando este ensamblaje de almacenamiento hace referencia a –