我們有一個ASP.NET MVC項目,我們希望在自動構建期間創建發佈包。構建使用未修改的默認模板和參數/p:DeployOnBuild=True /p:CreatePackageOnPublish=True
。TFS 2010 - 複製期間發生錯誤:路徑太長
如果我直接對服務器執行WebDeploy,它工作正常(如果將/ p:CreatePackageOnPublish更改爲false),但我更願意創建一個可在Lab生成期間部署的包。
錯誤信息是這樣的:
TF270002:出現了一個錯誤,複製文件 'C:\構建\ 19個\二進制' 到「\ NAS \建立\刪除\ MyProject的\ MyProject_Development.Test \ 20120209.1' 。 細節:指定的路徑,文件名或這兩者太長。 完全限定的文件名必須少於260個字符,並且 目錄名稱必須少於248個字符。
問題的第一部分是build文件夾路徑太長(274個字),但是從$(SystemDrive)\Builds\$(BuildAgentId)\$(BuildDefinitionPath)
改變工作目錄$(SystemDrive)\Builds\$(BuildDefinitionId)
後它下降到230個字符的路徑最長,所以應該沒問題。
現在問題似乎是放置文件夾中的路徑,儘管它的根路徑本身並不是那麼長\\nas\Build\Drop\MyProject
,構建名稱和內部版本號格式快速增加了長度MyProject_Development.Test\MyProject_Development.Test_20120208.1
。之後,所有他們嵌套的路徑創建非常深的文件夾結構_PublishedWebsites\MyProject.Web_Package\Archive\Content\C_C\Builds\19\Sources\MyProject\Source\MyProject.Web\obj\Debug\Package\PackageTmp\Content\ui-lightness\Images\ui-bg_diagonals-thick_18_b81900_40x40.png
。
那麼有什麼辦法可以解決這個問題嗎?我將內部編號格式從$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)
縮短爲$(Date:yyyyMMdd)$(Rev:.r)
以節省幾個字符,但這還不夠。我想我們可以稍微縮短構建名稱,但它會破壞所使用的命名約定(好吧,這不會是一個很大的問題,但它會很煩人!),它仍然會像短期解決方案。
還有什麼可做的?
我害怕,有沒有更好的解決這個...我已經削減儘可能的多餘的(我的構建現在稱爲M_D.T,非常有用),現在它的構建雖然我最長的路徑是250個字符,所以它有點接近極限的舒適度。感謝您的回答以及UserVoice的鏈接! – 2012-02-10 08:19:03
更新:修復此問題的功能建議被Microsoft拒絕。 – 2013-10-17 12:33:29
新的用戶語音鏈接,保持壓力;) http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4954037-fix-260-character-file-name-length-limitation – rob 2013-11-18 16:38:31