msbuild 架构比较 - 空目标

问题描述 投票:0回答:3

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

在解决方案中,我们有多个数据库,并且团队并不总是那么擅长记住检查解决方案中的更改(存储过程、表等)。虽然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 12.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 elease\Source\Blah\SomeData.DataDatabase.sqlproj]

有人有什么想法吗?

干杯

visual-studio-2013 msbuild schema-compare
3个回答
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 文件包含源和目标。其次,target参数还定义了一个目标。 target 参数将覆盖 .scmp 文件中的所有内容。

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

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

.scmp 文件是通过在 Visual Studio 中执行“架构比较”创建的,然后在选择源和目标后保存比较窗口。为了使您的命令正常工作,您需要确保“d:\sc.scmp”存在并且是这样一个文件。 请告诉我这是否有帮助。


0
投票

来自

https://platform326.rssing.com/chan-13477894/all_p22.html

这似乎是您引用的不再可用的文章的副本:http://blogs.msdn.com/b/ ssdt/archive/2014/07/15/msbuild-support-for-schema-compare-is-available.aspx :

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.