Visual studio 2013 msbuild架构比较-空目标

Visual studio 2013 msbuild架构比较-空目标,visual-studio-2013,msbuild,schema-compare,Visual Studio 2013,Msbuild,Schema Compare,我正在考虑从命令行使用MSBUILD来运行模式比较(*.scmp) 在解决方案中,我们有几个数据库,团队并不总是那么善于记住检查解决方案中的更改(存储过程、表等)。虽然VisualStudio可以显示比较,但我找不到导出错误列表的方法,以便我追踪团队。屏幕截图似乎是唯一的方法 我想我会看看是否有任何工具来产生差异列表。我在以下方面遇到了一个例子: 我看到了这个例子: C:\SampleProject > msbuild /t:SqlSchemaCompare /p:SqlScmpFile

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

在解决方案中,我们有几个数据库,团队并不总是那么善于记住检查解决方案中的更改(存储过程、表等)。虽然VisualStudio可以显示比较,但我找不到导出错误列表的方法,以便我追踪团队。屏幕截图似乎是唯一的方法

我想我会看看是否有任何工具来产生差异列表。我在以下方面遇到了一个例子:

我看到了这个例子:

C:\SampleProject > msbuild /t:SqlSchemaCompare /p:SqlScmpFilePath="d:\sc.scmp" /p:target="d:\target.dacpac" /p:TextOutput="d:\1.out" /p:Deploy="true
但是我不能让它工作。当我针对我的特定设置运行等效程序时,我得到:

C:\ProgramFiles(x86)\MSBuild\Microsoft\VisualStudio\v12.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(843,5):SchemaCompare错误:tar get参与者无效或为空。在Microsoft.Data.Tools.Schema.Tasks.Sql.SqlSchemaCompareTask.Execute()[C:\TFS\Argon\u主解决方案\u最新R elease\Source\Blah\SomeData.database.sqlproj]

有人有什么想法吗


干杯

前几天我偶然发现了这个问题。问题是我需要使用
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:\ProgramFiles(x86)\MSBuild\Microsoft\VisualStudio\{Your VS Version}\SSDT

我意识到这一问题已经有一段时间了,但我还是会回答的

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

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

但是,如果.scmp文件的源代码正确,但希望在.dacpac文件中指定目标,则这可能是故意的

生成后,可以在SSDT项目的bin\Debug或bin\Release文件夹中找到.dacpac文件。要使命令正常工作,需要确保“d:\target.dacpac”存在并且是这样的文件

.scmp文件是通过在VisualStudio中进行架构比较创建的,然后在选择源和目标后保存比较窗口。要使命令正常工作,需要确保“d:\sc.scmp”存在并且是这样的文件


请让我知道这是否有帮助。

您好,我没有从命令行使用schema compare,但听起来您正在以错误的方式解决问题-我个人会强制您的开发人员签入代码,如果您定期从源代码管理进行部署,并且他们不断丢失更改,他们会将更改签入-他们还应该处理自己的实例并签入以推送到共享实例,而不是直接处理共享实例-这将实际解决您的问题:)