Tengo un proyecto de Visual Studio 2010 que hace referencia a algunos componentes de terceros. Sus ensamblajes van acompañados de archivos de documentación XML, que son útiles para nosotros (y solo para nosotros) desarrolladores. Y cada vez que se crea el proyecto (ya sea en los modos Debug o Release), estos archivos XML se copian en el directorio de compilación.
Parece que no puedo encontrar una configuración o cambiar para deshabilitar la copia de esos archivos XML en el directorio de compilación, ya sea dentro de Visual Studio o mediante MSBuild. Un script posterior a la compilación puede ser una opción, pero maloliente. ¿Algunas ideas? Gracias.
visual-studio
msbuild
Humberto
fuente
fuente
Respuestas:
Cuando crea un proyecto, los archivos .xml / .pdb se recopilan mediante la tarea ResolveAssemblyReference. Cuando se llama a ResolveAssemblyReference, se pasa una lista de extensiones de archivo para archivos relacionados. Esa lista de extensiones de archivo se captura en la propiedad de MSBuild AllowReferenceRelatedFileExtensions . De forma predeterminada, esa lista contendrá ".pdb; .xml".
Si desea excluir todos los archivos de referencia relacionados para que no se recojan, simplemente anule el valor de la propiedad a algo para lo cual los archivos relacionados no tendrán extensiones. Por ejemplo, puede establecer AllowReferenceRelatedFileExtensions en "-".
También puede personalizar la lista de archivos que devuelve. Si solo desea encontrar archivos .pdb, deberá pasar
AllowedReferenceRelatedFileExtensions=".pdb"
. En ese caso, todas las referencias que tengan un archivo .pdb junto al .dll / .exe también se copiarán. También puede usar esto para copiar otros archivos relacionados que pueden no terminar en .pdb / .xml. Por ejemplo, si tiene un ensamblado al que se hace referencia llamado MyAssembly.dll y en esa misma carpeta existe MyAssembly.pdb y MyAssembly.foo Si lo estableceAllowedReferenceRelatedFileExtensions=".pdb;.foo"
, tanto el archivo .pdb como el .foo se copiarán en el directorio de salida.fuente
AllowedReferenceRelatedFileExtensions
?El archivo de proyecto de Visual Studio tiene el mismo formato que cualquier archivo msbuild. Entonces, puede agregar manualmente la condición en la sección correspondiente para no copiar sus archivos xml si el nombre de la configuración es 'Liberar'.
Debería estar cambiando
<ItemGroup>
a
<ItemGroup Condition="'$(CONFIG)'=='RELEASE'">
o algo como esto.
fuente
set MSBuildEmitSolution=1
o pasar el argumento de propiedad (p:msbuildemitsolution=1
).Si los archivos .xml / .pdb están marcados como "Contenido" de acción de compilación (etc.), puede cambiarlos a "Ninguno". También debe asegurarse de que la copia de salida de la compilación sea falsa .
¿Ambos están listos?
fuente
¿Cuál es el problema de que los archivos XML se copien en la carpeta en las versiones de lanzamiento? Me parece que esto está bien y que el problema real está en el código que recoge los archivos para colocarlos en el instalador. Recoger archivos DLL de terceros de su propia carpeta bin \ release no es una buena práctica en mi opinión. Haría que mi instalador recogiera archivos DLL de terceros de su propia carpeta en mi árbol de fuentes.
fuente
La configuración está en las Propiedades del proyecto en cuestión, en la pestaña "Construir", desmarque "Archivo de documentación XML". También es una propiedad de MSBuild llamada
<DocumentationFile>
en el correspondiente<PropertyGroup>
a su configuración de compilación en el archivo. * Proj.fuente