Una breve explicación de por qué quiero hacer esto:¿Puedo hacer que el AppDomain predeterminado use instantáneas de ciertos ensamblajes?
estoy ocupado escribiendo un plugin para Autodesk Revit Architecture 2010. Prueba de mi código plugin es extremadamente engorroso, ya que tengo que reiniciar Autodesk para cada sesión de depuración, cargue manualmente un proyecto de Revit, haga clic en la pestaña Complementos y luego inicie mi complemento. Esto solo lleva demasiado tiempo.
He escrito un segundo complemento que aloja un intérprete de IronPython. De esta forma, puedo jugar con la API proporcionada por Revit. Pero eventualmente, el código debe ser reescrito en C# - y depurado.
Fácil, pensé: Simplemente cargue los complementos de la secuencia de comandos de IronPython y ejercítelos. Esto funciona, pero una vez cargado, no puedo recompilar en Visual Studio, ya que la DLL ahora está cargada en Revits AppDomain.
Fácil, pensé (con un poco de ayuda de StackOverflow): Simplemente cargue la DLL en un nuevo dominio de aplicación. Desgraciadamente, los objetos de RevitAPI no se pueden ordenar en otro AppDomain, ya que no extienden MarshalByRefObject
.
Creo que podría estar en algo con las instantáneas. ASP.NET parece estar haciendo esto. Pero al leer la documentación en MSDN, parece que solo puedo especificar esto cuando cree un AppDomain.
¿Puedo cambiar esto por el dominio de aplicación actual (predeterminado)? ¿Puedo forzarlo a utilizar instantáneas de archivos DLL de un directorio específico?
los documentos dicen que están obsoletos. ¿Es esto lo mismo que obsoleto? Lo probaré. ¡Gracias! –
No puedo hacer que funcione ... –
Funciona para mí. He modificado mi respuesta con un ejemplo de trabajo. Copie y pegue en su método Main().También asegúrese de que su método Main() no haga referencia directamente a sus otros ensambles porque .NET los cargará antes de que 'SetShadowCopyFiles()' reciba el nombre –