Я обнаружил, что создание zip-файла с помощью задачи Zip, предоставляемой MSBuild Community Tasks, изменяет (или, скорее, удаляет) любые атрибуты файлов архивируемых файлов. Вот один из моих призывов к задаче Attrib, чтобы библиотеки DLL внутри папки имели атрибут только для чтения:
<Attrib ReadOnly="true" Normal="true" Files="@(DLLsToReadOnly)" />
В дальнейшем я включил эти DLL в элемент FilesToZip и назвал следующее:
<Zip Files="@(FilesToZip)" WorkingDirectory="$(Directory with files)" ZipFileName="$(DropLocation)\$(Zip file name).zip" />
Изучив извлеченные файлы, я обнаружил, что ни одна из библиотек DLL не имеет атрибута только для чтения (а тем более любого). Поиск в папке с библиотеками DLL, из которых задача Zip захватила файлы, показал, что библиотеки DLL имеют атрибут R (только для чтения).
Прочитав документацию и исходный код, я не смог найти никаких свойств, которые я мог бы установить, чтобы указать задаче сохранять атрибуты файлов. Можно ли использовать замену, которая сохранит атрибуты файла без изменений? Я попытался заглянуть в ICSharpCode.SharpZipLib, поскольку класс Zip в источнике задач сообщества ссылается на него, но пока что мне не удалось извлечь из этого много пользы.
(Я использую версию задачи сообщества 1.2.0.306)