Компрессор YUI и TFS Build - PullRequest
       52

Компрессор YUI и TFS Build

8 голосов
/ 17 ноября 2011

У нас есть проект, в котором файлы .js и .css сжимаются с помощью YUI Compressor. Очень хороший инструмент. Мы также используем TFS 2010 в качестве сервера сборки для ночных сборок, которые также развертываются на нашем веб-сайте разработчика.

Проблема, с которой мы сталкиваемся, заключается в том, что генерируемый YUI файл вызывает проблему «Отказано в доступе». Это потому, что уже существует такой файл, сгенерированный ранее, и что он является частью проекта, что делает его доступным только для чтения. Однако мы можем удалить его из проекта, и он должен создать нормально. Проблема в том, что сгенерированный файл не включается в фактический пакет развертывания.

Локально у меня нет проблем, потому что у меня есть сценарий команды предварительной сборки, который удаляет существующие файлы. Это, очевидно, не работает на сервере сборки. Может быть, у пользователя контекста TFS нет разрешения, я не знаю.

Есть ли кто-нибудь, у кого могли быть подобные проблемы?

Обновление 21/11: Вопрос может быть весьма расплывчатым. Чтобы упростить, давайте просто скажем, что я хочу, чтобы это работало так же, как и локально:

IF NOT $(ConfigurationName) == DEBUG DEL "$(ProjectDir)Styles\styles.min.css
IF NOT $(ConfigurationName) == DEBUG DEL "$(ProjectDir)JavaScript\script.min.js

Это определяется в строке события командной строки перед сборкой в ​​разделе Свойства проекта -> События сборки.

Скрипт удаляет файлы перед генерацией YUI-файла, и, следовательно, нет файла для перезаписи. Может ли быть так просто, что пользовательский контекст, который выполняет сборку TFS, обладает недостаточными правами на изменение?

РЕШЕНИЕ:

В результате перед сборкой мы получили следующий код:

attrib -r "$(ProjectDir)Styles\styles.min.css"
attrib -r "$(ProjectDir)JavaScript\script.min.js"
IF NOT $(ConfigurationName) == Debug $(MSBuildBinPath)\msbuild.exe "$(ProjectDir)Config\MSBuild\BuildSettings.xml"

/ Маттиас

1 Ответ

4 голосов
/ 23 ноября 2011

Если файлы являются частью вашего проекта и загружены из репозитория TFS, сначала всегда снимайте флажок «только для чтения», если вам необходимо выполнить какую-либо обработку, например удаление.Итак, в вашем скрипте сначала выполните:

attrib -r *.js
attrib -r *.css

После этого вы сможете нормально их удалить.Вероятно, это не проблема разрешения, поскольку учетная запись, которая используется для загрузки файлов, также является учетной записью, используемой для их удаления.

...