У меня есть проект Visual Studio 2008 С#/.NET 3.5 с задачей post build для ZIP-содержимого. Тем не менее, я обнаружил, что также получаю файлы ссылок .pdb(debug) и .xml(документации) на основе ссылок в моем выходном каталоге (и ZIP).
Например, если MyProject.csproj ссылается на YourAssembly.dll, и есть файлы YourAssembly.xml и YourAssembly.pdb в том же каталоге, что и DLL, они будут отображаться в моем выходном каталоге (и ZIP).
Я могу исключить *.pdb, когда ZIP'ing, но я не могу полностью исключить *.xml файлы, поскольку у меня есть файлы развертывания с тем же расширением.
Есть ли способ предотвратить копирование проекта связанных файлов PDB и XML?
Вы также можете указать это через командную строку:
MsBuild.exe build.file /p:AllowedReferenceRelatedFileExtensions=none
Я хотел иметь возможность добавлять и удалять ссылочные сборки в моем основном приложении, избегая при этом необходимости поддерживать файлы, которые мне нужно удалить или исключить.
Я вырыл Microsoft.Common.targets
, чтобы найти что-то, что будет работать, и нашел свойство AllowedReferenceRelatedFileExtensions
. По умолчанию он равен .pdb; .xml
, поэтому я явно определил его в файле проекта. Уловка в том, что вам что-то нужно (пробелов недостаточно), иначе он по-прежнему будет использовать значение по умолчанию.
<Project ...>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
<AllowedReferenceRelatedFileExtensions>
<!-- Prevent default XML and PDB files copied to output in RELEASE.
Only *.allowedextension files will be included, which doesn't exist in my case.
-->
.allowedextension
</AllowedReferenceRelatedFileExtensions>
</PropertyGroup>
Вы можете добавить команду события Post Build, похожую на del "$(TargetDir)YourAssembly*.xml", "$(TargetDir)YourAssembly*.pdb"
Это довольно старый вопрос, но поскольку нет ответа о том, как отключить создание файлов PDB и XML через интерфейс, я подумал, что он должен быть здесь для полноты.
В Visual Studio 2013: в свойствах проекта на вкладке компиляции снимите флажок "Сгенерировать файл документации XML", затем нажмите "Дополнительные параметры компиляции" ниже этого и измените "Генерировать информацию об отладке" на "Нет", и это будет делать трюк.
pdb
и xml
.
Мой ответ может быть тривиальным, но я хотел бы поделиться сценарием BAT, который я использую для удаления XML файлов, если для него есть соответствующая DLL. Это полезно, если вы просто хотите очистить выходную папку и иметь другие XML файлы, которые не хотите удалять.
SETLOCAL EnableDelayedExpansion
SET targetDir=%1
ECHO Deleting unnecessary XML files for dlls
FOR %%F IN (%targetDir%*.xml) DO (
SET xmlPath=%%~fF
SET dllPath=!xmlPath:.xml=.dll!
IF EXIST "!dllPath!" (
ECHO Deleting "!xmlPath!"
DEL "!xmlPath!"
)
)
Использование:
Cleanup.bat c:\my-output-folder\
Мне потребовался час, чтобы закончить эту простую работу (благодаря "отложенному расширению") со всеми типами поиска здесь и там. Надеюсь, что это поможет другим новичкам BAT, как я.
Зачем вообще создавать файлы .pdb
и .xml
, если они вам не нужны? Вы можете просто отключить отладку символов и генерацию файла документации в вашем проекте Свойства → Сборка (→ Дополнительно…). (Вероятно, только для сборки Release
.)
Если вы хотите только исключить файлы XML (например, отладочную версию), вы можете сделать что-то вроде этого:
<AllowedReferenceRelatedFileExtensions>
<!-- Prevent default XML from debug release -->
*.xml
</AllowedReferenceRelatedFileExtensions>
В принципе, каждое расширение (ограниченное точкой с запятой) будет исключено.