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