2011-09-06 49 views
8

estoy tratando de fusionar dos conjuntos en un solo conjunto, que funciona bien tranquila. Sin embargo, cuando intento de fusionar el * .pdb también, me sale un error:ILMerge excepción cuando se trata de fusionar archivo PDB

Access to the path "F:\Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Planrechnung\Planrechnung.pdb" is denied.

Si utilizo la opción/NDEBUG con el fin de omitir la fusión de los archivos * .pdb, que funciona bien. Pero, por supuesto, los símbolos no se pueden cargar durante la depuración. Al principio pensé que cuando llamaba a ILMerge en el evento de postconstrucción, ese Planrechung.pdb estaba en uso y bloqueado. También traté de cerrar VS2010 y llamar a ILMerge desde la línea de comandos, pero el resultado fue el mismo. Lo verifiqué con ProcessExplorer y no hay ningún control en el archivo.

Esta es la forma en que llamo ILMerge:

E:\XP\Tools\ILMerge\ilmerge /targetplatform:v4,"D:\WINDOWS\Microsoft.NET\Framework\v4.0.30319" /lib:"F:\Fentec\Businessplan\trunk\Ausgabe\Debug\bin" /out:Planrechnung.dll "F:\Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Planrechnung\Planrechnung.dll" "F:\Fentec\Businessplan\trunk\Ausgabe\Debug\modules\Mandantenverwaltung\Mandantenverwaltung.dll"

¿Me he perdido algo? Si necesita información adicional, solo pregunte.

Saludos,
Skalli

+0

posible duplicado de [¿Hay una manera de unir los archivos pdb con ILMerge?] (Http://stackoverflow.com/questions/1439721/is-there- a-way-to-merge-pdb-files-with-ilmerge) –

+0

No, he leído esa pregunta. Pero solo maneja cómo tratar con la opción/ndebug, no el problema que tengo aquí. – Skalli

Respuesta

19

he encontrado la solución al problema y es un poco embarazoso.

El nombre de salida no debe ser el mismo nombre de uno de los archivos PDB fusionadas. De lo contrario, este problema ocurre. Cuando cambié el nombre de un ensamblaje, funcionó muy bien. Tampoco es problema sobrescribir un ensamblaje en el proceso, pero no puede sobreescribir un archivo pdb existente.
no esperaba esto y topé por casualidad. Lo siento por todos los problemas

Saludos,
Skalli

+0

Hizo el mismo error. +1 para este – yas4891

+0

También hice lo mismo, y me salvaste la vida. Esas cosas tontas. No lo sientas, le estás dando una buena pregunta con una respuesta para salvar vidas que es una de las primeras entradas en google. – JoshuadV

+1

Si especifica algún otro directorio \ output, no se produce dicho error y no tiene que cambiar los nombres. –

0

Me suena como el archivo .pdb está bloqueado, probablemente debido a que se está utilizando en un depurador (como Visual Studio).

intente cerrar Visual Studio y su aplicación (si ya no tiene).

Si eso no funciona, a continuación, utilizar una herramienta como Process Explorer a buscar procesos que tienen que abrir el archivo. En el explorador de procesos se puede hacer esto mediante el descubrimiento -> buscar manija o DLL ...:

Screenshot of the Process Explorer Search dialog

Introduzca el nombre del archivo/AP que está buscando y aparecerá una lista de todos los procesos que tienen que archivo abierto: cierre los identificadores individuales o elimine/cierre esas aplicaciones y vuelva a intentarlo.

+0

Hola Justin, ya lo he intentado. No hay identificadores que utilicen Planrechnung.pdb. Pero descubrí que ILMerge está causando el problema. ILMerge puede sobrescribir un ensamblaje, pero no un archivo pdb. Cambié el nombre de la asamblea y ahora parece funcionar. – Skalli

Cuestiones relacionadas