我正在寻找从命令行使用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.SqlTasks.targets(843,5):SchemaCompare错误:tar 获取参与者无效或空。在Microsoft.Data.Tools.Schema.Tasks.Sql.SqlSchemaCompareTask.Execute()[C:\ TFS \ Argon_Main Solution_Latest R 新闻稿\源\布拉赫\ SomeData.DataDatabase.sqlproj]
有没有人有任何想法?
干杯
答案 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"存在并且是这样的文件。
如果有帮助,请告诉我。