Zip-задача MSBuild Community Tasks изменяет атрибут файла

Я обнаружил, что создание 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)


person Jooeun Lee    schedule 03.09.2009    source источник


Ответы (1)


Хорошо, теперь я собираюсь ответить на свой вопрос здесь в надежде, что он будет кому-то полезен:

В исходном коде для задачи Zip (MSBuild.Community.Tasks.Zip) частный метод ZipFiles () ничего не делает для установки или просмотра каких-либо внешних атрибутов (которые являются атрибутами каждого файла, архивируемого задачей). Поскольку мне нужно было сохранить атрибуты неизменными только для файлов с атрибутами только для чтения, я написал следующий код для моей простой цели:

if ((file.Attributes & FileAttributes.ReadOnly)
{
     entry.ExternalFileAttributes = (int)FileAttributes.ReadOnly;
}

Это не что иное, как общий и надежный код, который я должен использовать, но я написал это, чтобы убедиться, что это правильный способ сохранить атрибуты файлов, и это действительно так.

P.S. Если у кого-то есть предложения по поводу того, что здесь можно улучшить, ПОЖАЛУЙСТА, поделитесь своими мыслями! Как начинающий разработчик, я всегда открыт для обучения :)

person Jooeun Lee    schedule 03.09.2009