2011-11-17 91 views
8

我們有一個項目,其中.js和.css文件被YUI壓縮程序壓縮。一個非常好的工具。我們還使用TFS 2010作爲構建服務器,每晚構建也部署到我們的開發網站。YUI壓縮機和TFS Build

我們遇到的問題是文件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-build的用戶上下文有沒有足夠的修改權限?

SOLUTION:

我們結束了在預生成事件下面的代碼:

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" 

/馬蒂亞斯

+0

我認爲你的第一步是閱讀TFS編譯日誌文件,看看你的預編譯任務是否正在運行。考慮在prebuild事件腳本中添加'attrib -r'以關閉將生成的文件的只讀標誌。 –

+0

我仍然不明白你的問題......你想知道爲什麼預構建步驟不能在TFS構建服務器上運行? –

+0

我想知道如何解決自動生成文件作爲構建的一部分,當文件已經存在(和只讀)的問題。也許我們會採用相同的技術,使用預生成事件將其全部刪除。 – GarethOwen

回答

4

如果文件是項目的一部分,並從下載TFS存儲庫,首先總是刪除只讀標誌,如果你需要對它們進行任何處理,例如刪除。因此,在你的腳本,首先做:

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

應能後細刪除它們。這可能不是權限問題,因爲用於下載文件的帳戶也是用於刪除它們的帳戶。

+0

工作就像一個魅力。謝謝! – Mattias