2010-12-16 7 views
12

A primera vista, mi problema parecía ser común: tengo una tarea personalizada de compilación de MS en algunos de mis proyectos. Una vez que compilo los proyectos, ya no puedo compilar la tarea de compilación: el ensamblado de la tarea de compilación está bloqueado por Visual Studio.Ensamblaje personalizado de bloqueos de tarea de MSBuild

Encontré un montón de mensajes aquí diciendo 'Solo heredar de AppDomainIsolatedTask'.

Mi tarea ya lo hace. El conjunto no contiene nada más que esta tarea. El AppDomain parece estar descargado, al menos se dispara el evento DomainUnload. Y, los ensamblajes dependientes se descargan correctamente.

Sin embargo, el ensamblado que contiene la tarea de compilación está bloqueado por devenv.exe (que comprobé dos veces por ProcessExplorer).

Encontré otra publicación que decía 'Establecer la propiedad GenerateResourceNeverLockTypeAssemblies true', que sonaba prometedor pero tampoco ayudaba.

Entonces, me pregunto qué más puede salir mal. El comportamiento es el mismo no importa si utilizo VS2008 o 2010.

+0

Compruebe las respuestas de http://stackoverflow.com/questions/3371545/visual-studio-2008-locks-custom-msbuild-task-assemblies – alexandrul

+1

Esa no es la misma pregunta. Estoy teniendo el mismo problema, y ​​el problema NO es que el ensamblaje de la tarea esté bloqueado (lo que es comprensible). El problema es que cualquier archivo dll que cargue dentro de su tarea (por ejemplo, Assembly.LoadFrom()) nunca será liberado incluso después de que se elimine el AppDomain de su tarea, e incluso si crea otro AppDomain usted mismo y carga el dll desde allí: el dll sigue bloqueado después de cerrar el AppDomain. El mismo código funciona bien en una aplicación de consola (el programa aún se está ejecutando, pero el dll se liberará si cierra el dominio de aplicación), pero en la tarea VS se comporta de manera diferente – Sheepy

+0

Esto no es una respuesta a su pregunta, pero si lo está haciendo algún tipo de codegen desde VS IDE, mientras que el IDE se está ejecutando, entonces es probable que sea mejor aprovechar las plantillas T4 o una herramienta personalizada VS. Esto debería ser un paso lateral para su problema, especialmente si usa plantillas T4. –

Respuesta

-3

Se puede resolver cambiando la seguridad del permiso del sistema de archivos. pon a tu usuario actual como copropietario del archivo bloqueado.

Cuestiones relacionadas