msbuild架构比较 - 空目标

时间:2015-08-13 14:48:47

标签: visual-studio-2013 msbuild schema-compare

我正在寻找从命令行使用MSBUILD来运行架构比较(* .scmp)

在解决方案中,我们有几个数据库,并且团队在记住检查变更(stor procs,tables等等)到解决方案时并不总是那么好。虽然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 \ Microsoft \ VisualStudio \ v12.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTask​​s.targets(843,5):SchemaCompare错误:tar   获取参与者无效或空。在Microsoft.Data.Tools.Schema.Tasks.Sql.SqlSchemaCompareTask.Execute()[C:\ TFS \ Argon_Main Solution_Latest R   新闻稿\源\布拉赫\ SomeData.DataDatabase.sqlproj]

有没有人有任何想法?

干杯

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

我意识到这已经有一段时间了,但是无论如何我都会回答。

首先,我不清楚你要完全比较的是什么。您想要比较项目的两个版本以查看差异,还是要将项目与数据库进行比较?

我注意到的一件事是你在命令行中指定了两次目标。首先,通过 SqlScmpFilePath 参数引用的.scmp文件包含源和目标。其次, target 参数也定义了一个目标。 target 参数将覆盖.scmp文件中的任何内容。

但是,如果您的.scmp文件具有正确的源但您想在.dacpac文件中指定目标,则可能是故意的。

构建后,可以在SSDT项目的bin \ Debug或bin \ Release文件夹中找到.dacpac文件。为了让你的命令工作,你需要确保" d:\ target.dacpac"存在并且是这样的文件。

.scmp文件是通过在Visual Studio中执行架构比较创建的,然后在选择源和目标后保存比较窗口。为了让你的命令工作,你需要确保" d:\ sc.scmp"存在并且是这样的文件。

如果有帮助,请告诉我。