2015-08-13 157 views
2

我期待在使用MSBUILD從命令行運行模式比較(* .scmp)的MSBuild架構比較 - 空目標

內解決方案,我們有幾個數據庫和球隊並不總是在這個偉大的記住檢查更改(存儲過程,表格等)到解決方案中。儘管Visual Studio可以顯示比較結果,但我無法找到一種導出錯誤列表的方式,對於我來說追逐團隊。屏幕截圖似乎是唯一的方法。

我想我會看看是否有任何工具來產生差異列表。我碰到一個例子就是在以下方面:

http://blogs.msdn.com/b/ssdt/archive/2014/07/15/msbuild-support-for-schema-compare-is-available.aspx

我看到這個例子:

C:\SampleProject > msbuild /t:SqlSchemaCompare /p:SqlScmpFilePath="d:\sc.scmp" /p:target="d:\target.dacpac" /p:TextOutput="d:\1.out" /p:Deploy="true 

但是我不能讓它開始工作。當我跑對我的特別設定等價起來,我得到:

C:\ Program Files文件(x86)的\的MSBuild \微軟\ VisualStudio的\ V12.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTask​​s。目標(843,5):SchemaCompare錯誤:焦油 get參與者無效或爲空。在Microsoft.Data.Tools.Schema.Tasks.Sql.SqlSchemaCompareTask.Execute()[C:\ TFS \ Argon_Main Solution_Latestř 新聞稿\源\布拉赫\ SomeData.DataDatabase.sqlproj]

有沒有人有任何想法?

乾杯

+1

嗨,我沒有使用模式比較從命令行,但它聽起來像你正在解決問題的方式是錯誤的 - 親自我會強迫你的開發人員檢查代碼,如果你從源代碼管理部署定期並且他們會不斷失去它們將檢查它們的變化 - **也**他們應該在自己的實例上工作並檢入以推送共享實例,而不是直接在共享實例上工作 - 這實際上可以解決您的問題:) –

回答

1

前幾天我遇到了這個問題。原來問題是我需要使用命令行參數VisualStudioVersion

msbuild /t:SqlSchemaCompare /p:VisualStudioVersion=14.0 /p:SqlScmpFilePath="MySchemaCompare.scmp" /p:target="MyConnectionString" /p:TextOutput="..\output.out" 

Microsoft.Data.Tools.Schema.SqlTasks.targets文件應在C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\{Your VS Version}\SSDT

0

位於我知道它已經有一段時間,因爲這是問過,但無論如何,我會回答。

首先,我不清楚你想要比較什麼。你想比較項目的兩個版本以查看差異,還是比較項目與數據庫?

我注意到的一件事是你在命令行中指定了兩次目標。首先,通過SqlScmpFilePath參數引用的.scmp文件包含源和目標。其次,目標參數也定義了一個目標。 目標參數將覆蓋.scmp文件中的任何內容。

但是,如果您的.scmp文件具有正確的源,但您想要在.dacpac文件中指定目標,可能這是故意的。

生成後,可以在SSDT項目的bin \ Debug或bin \ Release文件夾中找到.dacpac文件。爲了讓你的命令起作用,你需要確保「d:\ target.dacpac」存在並且是這樣一個文件。

The。通過在Visual Studio中執行架構比較創建scmp文件,然後在選擇源和目標後保存比較窗口。爲了讓你的命令起作用,你需要確保「d:\ sc.scmp」存在並且是這樣一個文件。

請讓我知道這是否有幫助。