2014-04-07 43 views
1

我想創建一個TFS 2013構建定義,它構建一個SQL項目並將完整的CREATE DATABASE腳本輸出到bin文件夾。使用Database Project和TFS 2013生成CREATE DATABASE腳本Build Automation

當我在本地計算機上編譯我的項目時,SQL腳本根據數據庫項目設置正確輸出到bin [configuration]文件夾。

但是,當我使用TFS構建自動化構建相同的項目時,構建成功,但沒有創建bin文件夾,也沒有輸出sql腳本。

任何想法我做錯了什麼?

此外,當腳本是本地輸出,路徑是空白:

:setvar DefaultDataPath "" 
:setvar DefaultLogPath "" 

任何想法,我怎麼能填充這些爲SQL Server 2008 R2的默認值?

編輯:

其實,如果我設置構建目標只有.sqlproj文件,然後垃圾桶正確地輸出。當sqlproj作爲其他項目解決方案的一部分構建時,問題就來了。

構建代理不會在src工作目錄中創建單獨的bin文件夾;僅生成啓動項目的輸出並將其複製到最終的bin文件夾中。

我想構建生成的SQL腳本,並將其與其他項目輸出一起復制到輸出文件夾。

這可能嗎?

+0

您在每個環境中使用哪些構建配置 - 本地和TFS構建?爲Debug版本設置選項並忽略爲Release版本設置選項並不罕見,然後想知道爲什麼CI(版本)版本的行爲不如預期。 – J0e3gan

+1

只需雙重檢查,我在兩種情況下都使用Release配置 – gareththegeek

+0

關於第二個問題,您是否在SQLCMD變量下爲項目屬性中的DefaultDataPath和DefaultLogPath設置了Release配置默認值? – J0e3gan

回答

1

我最終採用了基於This Answer的解決方法。

如果我將數據庫項目構建爲解決方案的一部分,那麼腳本確實會在放置文件夾中結束,而不是生成代理的工作文件夾。

使用:

<CommentOutSetVarDeclarations>True</CommentOutSetVarDeclarations> 

在發佈配置文件允許我從在我的情況下,可以接受的替代命令提示符下設置的默認路徑等。