No estoy seguro de la mejor manera de explicar esto, por favor deje comentarios si no entiende.¿La mejor manera de realizar solo una función si se carga una DLL (.NET)?
Básicamente, tengo algunas bibliotecas para que varias tareas funcionen con diferentes programas; la notificación es solo un ejemplo.
Ahora, estoy construyendo un nuevo programa, y quiero que sea lo más ligero posible. Aunque me gustaría incluir mi motor de notificación, no creo que muchas personas utilicen realmente su funcionalidad, por lo que preferiría no incluirlo de manera predeterminada, solo como una descarga opcional.
¿Cómo programo esto?
Con Dlls no administrados y P/Invoke, básicamente puedo ajustar todo el lote en un ciclo de prueba/captura, pero no estoy seguro acerca de la versión administrada.
Hasta ahora, la mejor manera en que puedo pensar es comprobar si el archivo DLL existe al inicio, luego configurar un campo bool o similar, y cada vez que quisiera que se dispare una notificación, podría hacer un if/compruebe el bool y encienda ...
He visto en la ventana de depuración que los archivos DLL solo se cargan cuando son necesarios. El programa obviamente se compilará, ya que todos los componentes serán visibles para el proyecto, pero ¿se ejecutará en la máquina de los usuarios finales sin el DLL?
Más importante aún, ¿hay una mejor manera de hacerlo?
Lo ideal sería que no quisiera tener nada sobre las notificaciones en mi aplicación y de alguna manera tenerlo de modo que si el archivo DLL se descarga, agrega esta funcionalidad externamente. Realmente no es el fin del mundo tener unos pocos bytes adicionales llamando al notification("blabla");
(o similar), pero estoy pensando mucho más adelante cuando tengo intenciones mucho más grandes y solo quiero conocer las mejores prácticas para este tipo de cosas. .
distinción sutil, pero también puede probar si la carga tiene éxito, sin saber la ruta. La configuración de encuadernación ensamblada se puede usar para controlar, p. la ubicación de un directorio de complementos sin que el programa necesite saber cómo funciona la resolución de nombres. En otras palabras, el código debe ser independiente del archivo de ensamblaje físico real. – harpo
Voy a echar un vistazo al System.Reflection.Assembly - Gracias ... ... he modificado el espacio en blanco en su respuesta, ya que dice que ya he votado y no voy a dejar que vote ... Creo que relacionado con el corte antes. – Wil