2012-10-12 138 views
5

Esta pregunta tiene pertinencia más allá de mi propio caso porque cualquiera que tenga una aplicación localizada y tenga que entregar un EXE independiente tiene este problema-- querrán usar ILMerge (o Costura o alguna solución homebrew) para poner DLL de localización (o cualquier otro ensamblado) en su EXE, pero una vez que lo hacen, ya no pueden depurar su código. El depurador VS simplemente rechazará aceptar el archivo PDB original generado para el EXE original, presumiblemente porque el paso ILMerge actualiza la suma de comprobación o cambia el GUID.¿Alguna forma de obtener VS (2010) para aceptar PDB después de usar ILMerge/Costura para combinar ensamblajes?

Lo que me pregunto es si hay alguna forma de evitar esto ... como una opción poco conocida de ILMerge, tal vez? Me parece una pérdida muy común e innecesaria de la capacidad de depuración.

Creo que la única otra forma de depurar una aplicación después de la localización es mantener una opción de compilación paralela que utiliza las DLL un-ILMerged, lo cual está bien, a menos que desee depurar el código de localización en sí (por ejemplo , yo) ... entonces realmente no tienes suerte. ¿Alguien puede pensar en otras opciones?

También traté de usar Costura, pero debido a que las DLL de localización contienen todos los recursos idénticos (y son idénticos al recurso principal AppName.resource), solo puede agregar una DLL a las Referencias: las siguientes no están permitidas . ¿Hay alguna manera de hacer cosquillas a Costura para que funcione? (Sin embargo, si se pudiera hacer funcionar, el problema de PDB podría no ocurrir ya que la combinación es parte de la construcción del estudio visual ...?)

Editar: Estoy buscando ideas que den como resultado un PDB/EXE partido. Me doy cuenta de que puedes hackear el pdb en un editor hexadecimal. Sin embargo, la pregunta específicamente pregunta acerca de las formas de hacer que el sistema funcione según lo previsto.

Respuesta

0

El archivo PDB y el EXE tienen ambos un GUID. Si los GUID no coinciden, el depurador se rehusará a cargar el archivo PDB. Si edita manualmente uno de los dos archivos para que los GUID coincidan, se cargará el archivo PDB. Esto podría conducir a información de símbolo incorrecta en el desmontaje.

1

ILMerge también generará pdb combinados. ¿Tiene esta opción apagada, o el pdb fusionado tampoco funciona para usted?

Cuestiones relacionadas