Necesito cargar dos versiones de la misma DLL para comparar sus resultados. Supongo que puedo usar AppDomains para esto, pero necesito alguna guía..NET: carga dos versiones de la misma DLL
Respuesta
Ok, en realidad fue mucho más fácil de lo que imaginaba.
m_Assembly1 = Reflection.Assembly.LoadFile(IO.Path.Combine(System.Environment.CurrentDirectory, "Old Version\Some.dll"))
m_Assembly2 = Reflection.Assembly.LoadFile(IO.Path.Combine(System.Environment.CurrentDirectory, "New Version\Some.dll"))
Console.WriteLine("Old Version: " & m_Assembly1.GetName.Version.ToString)
Console.WriteLine("New Version: " & m_Assembly2.GetName.Version.ToString)
m_OldObject = m_Assembly1.CreateInstance("FullClassName")
m_NewObject = m_Assembly2.CreateInstance("FullClassName")
De aquí en adelante utilicé el encuadernado tardío y/o reflejo para ejecutar mis pruebas.
Echa un vistazo a Activator.CreateInstance() en MSDN. Código de muestras dentro.
Here es una guía para hacer eso:
extern alias oldVer;
extern alias newVer;
y al compilar:
csc /r:oldVer=Somepath\ClassLibrary.dll /r:newVer=AnotherPath\ClassLibrary.dll program.cs
o en Visual Studio cambie el campo "alias" en la pestaña de la propiedad de su proyecto referencias alt text http://www.code-magazine.com/ArticleImage.aspx?QuickID=0507041&Image=Figure%202.bmp
Tuvimos algunos problemas con este enfoque si ClassLibrary.dll hace referencia a otro ensamblado, clr solo resolvería la primera versión de la dependencia, la segunda dependencia de la versión se resolvió como la primera versión. Tuvimos que suscribirnos a AppDomain.ResolveAssembly y hacer algunas cosas desagradables para superar este problema. –
Mi arnés de prueba ya está escrito en VB, por lo que, por supuesto, tendría que ser una característica de C#. –
- 1. Uso de múltiples versiones de la misma DLL
- 2. ¿Puedo usar dos versiones incompatibles de la misma DLL en el mismo proceso?
- 3. Cree dos versiones, lite y pro, de la misma aplicación
- 4. Dos versiones diferentes de JQuery en la misma página HTML
- 5. Dos versiones de jQuery en la misma página
- 6. Cargue 2 versiones de la misma DLL en el mismo proceso
- 7. DLL de error de versiones
- 8. ¿Es posible cargar diferentes versiones de la misma DLL en Java?
- 9. ¿Se pueden cargar versiones diferentes de DLL en la misma aplicación?
- 10. ¿Pueden coexistir dos versiones diferentes de Windows SDK en la misma máquina sin conflicto?
- 11. ¿Puede mi aplicación .Net hacer referencia a dos versiones diferentes de una biblioteca de .NET Framework?
- 12. DLL de carga de retraso
- 13. compilar dos versiones de la misma aplicación de Android e instalar ambas en el mismo dispositivo
- 14. ¿La DLL siempre tiene la misma dirección base?
- 15. ¿Pueden coexistir varias versiones de una misma DLL (Boost) en el mismo proceso?
- 16. ¿Versiones para iPhone y iPad de la misma aplicación?
- 17. java: use dos versiones de la misma lib en una sola aplicación web
- 18. ¿Puedo instalar dos versiones diferentes de Visual Studio en la misma computadora?
- 19. Agregando la misma referencia "* .dll" a múltiples proyectos en la misma Solución
- 20. Maven - Detectar múltiples versiones de la misma dependencia
- 21. ¿Cómo puedo saber si dos DLL .NET son iguales?
- 22. Android: varias versiones personalizadas de la misma aplicación
- 23. Versiones de registro de todas las DLL usadas
- 24. funciona desde una llamada dll la misma función de nombre de otra dll
- 25. Glassfish biblioteca nativa de carga (.dll, .so)
- 26. ¿Cómo se permiten dos DLL con el mismo namespace.class para existir en la misma aplicación?
- 27. Ordenar dos matrices de la misma manera
- 28. .NET versiones demonios
- 29. ¿La mejor manera de realizar solo una función si se carga una DLL (.NET)?
- 30. Ubicación de Dll de terceros en el control de versiones para el proyecto .NET
¿El conjunto que desea comparar tiene otras referencias? ¿El ensamble es fuerte? –
No, los ensamblados no tienen nombres fuertes. –
No, los ensamblajes no tienen otras referencias. –