Выходной параметр «CopiedFiles» задачи «Копировать» возвращает все файлы, указанные для копирования, даже если он ничего не копирует, учитывая SkipUnchangedFiles = "true" - PullRequest
4 голосов
/ 10 мая 2011

Параметр CopiedFiles возвращает все файлы, которые были предназначены для копирования. Но с учетом того факта, что SkipUnchangedFiles установлен в значение true, а сама ttask не копирует ничего, что можно увидеть в командной строке (нет сообщения о копировании). Тогда почему CopiedFiles пуст?

Мне нужно, чтобы параметр CopiedFiles был заполнен только теми файлами, которые были фактически скопированы (потому что они были изменены) для дальнейшего копирования этих файлов в какую-то другую папку. Это делается для того, чтобы поддерживать актуальную папку выпуска, а также извлекать только те файлы, которые действительно необходимо распространить на UAT / рабочий сервер.

Для справки, код задачи копирования, который я использую, приведен ниже:

<Copy SkipUnchangedFiles="true"
            SourceFiles="@(cfile)"
                DestinationFiles="@(cfile->'$(PublishDir)\%(Identity)')">

        <Output
                    TaskParameter="CopiedFiles"
                    ItemName="Changed" />

</Copy>

<Message Text="changed:@(Changed)" Importance="high" />

Есть ли ошибка в задании копирования или это предполагаемое поведение.

1 Ответ

3 голосов
/ 10 мая 2011

Поведение, которое вы видите, является намеренным. MSBuild отслеживает зависимости файлов, используя выходные данные задач. Если бы это было сделано иначе, все, что полагалось на массив элементов @ (Changed) в качестве входных данных, не полностью обрабатывало бы все файлы, которые ему были необходимы в большинстве случаев. Он даже будет отслеживать свойства и элементы, созданные внутри целей, которые даже не выполняются, когда входы и выходы обновлены по той же причине. Попробуйте создать другую собственную задачу копирования с дополнительным выходным параметром CopiedFilesCopiedByTask (это именование отражает именование и поведение ValueSetByTask в несуществующей в противном случае задаче CreateProperty).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...