У нас есть проект, в котором файлы .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"
/ Маттиас