Desde la versión 3.0, .NET instala un grupo de diferentes 'ensamblados de referencia' en C: \ Archivos de programa \ Conjuntos de referencia \ Microsoft ...., para admitir diferentes perfiles (por ejemplo, perfil de cliente .NET 3.5, perfil de Silverlight). Cada uno de estos es un ensamblado .NET apropiado que contiene solo metadatos, sin código IL, y cada ensamblaje está marcado con el ReferenceAssemblyAttribute
. Los metadatos están restringidos a los tipos y miembros disponibles bajo el perfil correspondiente: así es como Intellisense muestra un conjunto restringido de tipos y miembros. Los ensambles de referencia no se utilizan en tiempo de ejecución.¿Cómo creo y uso un "Ensamblaje de referencia" de solo metadatos .NET?
Me enteré un poco al respecto desde this blog post.
Me gustaría crear y usar un conjunto de referencia para mi biblioteca.
- ¿Cómo creo un ensamblado solo de metadatos? ¿Hay algún indicador de compilador o postprocesador ildasm?
- ¿Hay atributos que controlan qué tipos se exportan a diferentes 'perfiles'?
- ¿Cómo funciona la resolución del conjunto de referencia en tiempo de ejecución? Si tuviera el conjunto de referencia presente en mi directorio de aplicaciones en lugar del ensamblado "real", y no en el GAC, continuaría la prueba y se desencadenaría mi evento AssemblyResolve para que puede suministrar el ensamblaje real en tiempo de ejecución?
Cualquier idea o consejos sobre dónde podría obtener más información sobre esto sería muy apreciada.
Actualización: Mirando a su alrededor un poco, veo el .NET 3.0 '' ensamblados de referencia parecen tener algo de código, y la única Reference Assembly attribute se añadió en .NET 4.0. Entonces, el comportamiento podría haber cambiado un poco con el nuevo tiempo de ejecución.
¿Por qué? Para mi biblioteca de complementos de Excel-DNA (http://exceldna.codeplex.com), creo el complemento .xll de un solo archivo empaquetando los ensamblados a los que se hace referencia en el archivo .xll como recursos. Los ensamblados empaquetados incluyen el código de complemento del usuario, así como la biblioteca administrada Excel-DNA (que puede ser referenciada por el ensamblado del usuario).
Suena bastante complicado, pero funciona maravillosamente bien la mayor parte del tiempo: el complemento es un solo archivo pequeño, por lo que no hay problemas de instalación de distribución. Me encuentro con problemas (no inesperados) debido a las diferentes versiones: si hay una versión anterior de la biblioteca administrada Excel-DNA como archivo, el tiempo de ejecución cargará eso en lugar del empaquetado (nunca tengo la oportunidad de interferir con el cargando).
Espero hacer un ensamblaje de referencia para mi parte administrada Excel-DNA que los usuarios pueden señalar al compilar sus complementos. Pero si erróneamente tienen una versión de este ensamblado en tiempo de ejecución, el tiempo de ejecución no debería cargarlo, y darme la oportunidad de cargar el ensamblaje real de los recursos.
¿Por qué quieres hacer eso? – svick