2016-08-05 110 views
0

我有一個通過連接到SQL 2016實例並將數據庫導入Visual Studio創建的數據庫項目。部署CLR時從TFS部署數據庫失敗

我通過創建發佈文件並將其檢入到源代碼控制中來創建了一個部署。在我必須更改的設置中,不要部署任何用戶帳戶或權限更改,因爲它想從我的系統中刪除多個帳戶。

當TFS執行的MSBuild做部署,這裏所傳遞的命令行參數:/p:VisualStudioVersion=14.0 /噸:建設;發佈/p:SqlPublishProfilePath=MyDBProj.publish.xml

問題在於,如果我不排除CLR用戶定義類型,也排除組件,部署失敗,出現以下(其中包括許多其他類似的)錯誤:

C:\Builds\1\MyDBProj\MyDBProj - Prod\bin\MyDBProj.publish.sql (0, 0) 
[System.Web] has an unresolved dependency to [System.Design]. A deployment script with correct ordering cannot be created. 

C:\Builds\1\MyDBProj\MyDBProj - Prod\bin\MyDBProj.publish.sql (0, 0) 
[System.Runtime.Remoting] has an unresolved dependency to [System.Web]. A deployment script with correct ordering cannot be created. 

C:\Builds\1\MyDBProj\MyDBProj - Prod\bin\MyDBProj.publish.sql (0, 0) 
[System.Design] has an unresolved dependency to [System.Web]. A deployment script with correct ordering cannot be created. 

C:\Builds\1\MyDBProj\MyDBProj - Prod\bin\MyDBProj.publish.sql (0, 0) 
An error occurred during deployment plan generation. Deployment cannot continue. 
(-1, 0) 
Exception Message: MSBuild error 1 has ended this build. You can find more specific information about the cause of this error in above messages. (type BuildProcessTerminateException) 
Exception Stack Trace: at System.Activities.Statements.Throw.Execute(CodeActivityContext context) 
at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) 
at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager) 
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation) 

我試圖引用作爲主數據庫引用。我不確定還有什麼要做。構建在TFS上時,我需要與數據庫一起部署的CLR組件。

+0

構建是否在沒有任何問題的情況下在本地執行(而不是通過TFS)? –

+0

是的。如果我登錄到同一臺機器(Build Server/TFS服務器),Load VS和項目,構建和部署,所有工作正常。只有在通過TFS運行時纔會失敗。 – SpaceCowboy74

回答

0

TFS默認調用MSBuild命令在構建代理機器上構建和部署解決方案。因此,您可以使用VS2015(或MSBuild命令)在生成代理機器和本地上手動構建和部署解決方案,確保在手動運行生成代理機器時一切正常。有關如何從MSDN登錄Deploying CLR Database Objects的詳細信息。

此外,根據錯誤信息,這可能是由循環依賴造成的。 VS無法以正確的順序創建部署腳本,因爲每次它在依賴關係樹上運行時,都會結束回到開始位置。請仔細檢查,以縮小問題的範圍。

+0

任何想法如何找到循環依賴?奇怪的是,如果我從構建代理機器/ TFS服務器(它們是相同的盒子)手動部署,如果我將解決方案加載到VS上並從那裏部署,那麼一切都可以。 – SpaceCowboy74

+0

您認爲這可能與SQL2016有關嗎?你的TFS的版本是什麼?如果它比TFS2015RTM舊,那麼可能與SQL2016不兼容。您可以先更新到最新版本TFS2015update3(https://www.visualstudio.com/zh-cn/news/releasenotes/tfs2015-update3-vs),然後重試。 –

+0

我將所有內容更新到最新的TFS(更新3)。現在我無法獲得任何構建版本。我排隊他們(使用XAML配置),他們只是坐在「運行0秒」,沒有更新。 – SpaceCowboy74