Как предотвратить копирование файлов документации XML в режиме выпуска?

У меня есть проект Visual Studio 2010, который ссылается на некоторые сторонние компоненты. Их сборки сопровождаются файлами документации XML, которые полезны для нас (и только для нас) разработчиков. И всякий раз, когда проект создается (в режимах Debug или Release), эти файлы XML копируются в каталог сборки.

Я не могу найти параметр или переключатель, чтобы отключить копию этих файлов XML в каталоге сборки, либо в Visual Studio, либо в MSBuild. Post-build script может быть вариантом, но вонючим. Есть идеи? Спасибо.

Ответ 1

Когда вы создаете проект, файлы .xml/.pdb собираются через задачу ResolveAssemblyReference. Когда вызывается ResolveAssemblyReference, ему передается список расширений файлов для связанных файлов. Этот список расширений файлов записывается в свойстве MSBuild AllowedReferenceRelatedFileExtensions. По умолчанию этот список будет содержать ".pdb;.xml".

Если вы хотите исключить все связанные ссылочные файлы, то просто переопределите значение свойства на то, к чему у связанных файлов не будет расширений. Например, вы можете установить AllowedReferenceRelatedFileExtensions на "-".

Вы также можете настроить список файлов, которые возвращаются этим. Если вы хотите найти только файлы .pdb, вам нужно пройти в AllowedReferenceRelatedFileExtensions=".pdb". В этом случае любые ссылки, которые имеют файл .pdb рядом с .dll/.exe, также будут скопированы. Вы также можете использовать это для копирования других связанных файлов, которые могут не заканчиваться на .pdb/.xml. Например, если у вас есть ссылка с именем MyAssembly.dll и в той же папке существует MyAssembly.pdb и MyAssembly.foo. Если вы установите AllowedReferenceRelatedFileExtensions=".pdb;.foo", то оба файла .pdb и .foo будут скопированы в выходной каталог.

Ответ 2

Файл проекта Visual Studio имеет тот же формат, что и любой файл msbuild. Таким образом, вы можете вручную добавить условие в соответствующий раздел, чтобы не копировать файлы xml, если имя конфигурации "Release".

Он должен меняться

<ItemGroup>

к

<ItemGroup Condition="'$(CONFIG)'=='RELEASE'">

или что-то вроде этого.

Ответ 3

Если .xml/.pdb отмечены как "состав" контента (и т.д.), вы можете изменить их на "Нет". Вы также должны убедиться, что их копирование в сборку является ложным.

Оба из этих наборов?

Ответ 4

В чем проблема с копированием файлов XML в папку в версиях? Мне кажется, что это прекрасно и что реальная проблема связана с кодом, который захватывает файлы, чтобы разместить их в установщике. По-моему, сбор пробных файлов сторонних разработчиков из вашей собственной папки bin\release не является хорошей практикой. Я хотел бы, чтобы мой установщик забирал сторонние DLL из их собственной папки в моем исходном дереве.

Ответ 5

Параметр находится в свойствах данного проекта, на вкладке "Создать" снимите флажок "Файл документации XML". Это также свойство MSBuild, называемое <DocumentationFile> в соответствии с применимым <PropertyGroup> для вашей конфигурации сборки в файле. * Proj.