2012年8月12日

Windows Azure - 使用TFS部署,發生Service.Definition.build.csdef存取拒絕的錯誤

Windows Azure的Web Site和Cloud Service有一個非常棒的功能,就是可以把Team Foundation Service的檔案,直接部署上去,但這次部署的時候,發生了一個錯誤,下面是錯誤訊息。

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Windows Azure Tools\1.7\Microsoft.WindowsAzure.targets (3187): Unable to copy file "ServiceDefinition.csdef" to "ServiceDefinition.build.csdef". Access to the path 'ServiceDefinition.build.csdef' is denied.

這個是錯誤訊息截圖,沒錯,這個錯誤就是要將ServiceDefiontion.csdef複製一份成ServiceDefinition.build.csdef時,沒辦法進行存取。

image

網路上也有找到人家說,可能是ServiceDefinition.build.csdef被設定成唯讀,但小弟我這次有檢查過,其實這個檔案沒設定成唯讀,而且就算把本機的ServiceDefinition.build.csdef砍掉也沒用!!後來去看了Log才知道,原來指的是簽入到Team Foundation Service的檔案,而不是本機上的檔案= =|||。

好,我們在把問題整理一下,從上面的訊息可以知道,使用Team Foundation Service來自動建置的時候,Team Foundation Service會自動的將ServiceDefinition.csdef拷貝一份成ServiceDefinition.build.csdef,而因為ServiceDefinition.build.csdef被我們上傳一份到Team Foundation Service,所以當Team Foundation Service處理這個動作的時候,會因為ServiceDefinition.build.csdef已經存在而發生錯誤,所以知道問題後,解決方法其實很簡單,只需要把ServiceDefinition.build.csdef從Team Foundation Service的版控砍掉就可以了 ( 本機砍掉是沒有意義的喔@@ )

我們使用VS2012的版控,並且在Windows Azure的專案目錄下 ( 下圖是Study4TwAzure這個目錄下 ),可以找到ServiceDefinition.build.csdef這個檔案。

image

然後我們就勇敢的砍掉吧!!

image

砍掉完後,也不要忘記簽入進去。

image

輸入一下註解,並且簽入。

image

再次執行就可以了!!

後記

這只是個小小的問題,但如果不小心碰到的人,還是會遇到一點挫折,所以把他po出來,讓未來有遇到的人,可以有個方向,謝謝大家!~

沒有留言:

張貼留言