2015-08-13 2 views
2

Я смотрю с помощью MSBuild из командной строки для запуска схемы сравнения (*) .scmpMSBuild схема сравнения - пустая цель

В решении есть несколько баз данных, и команда не всегда великолепно не забывая проверять изменения (хранить procs, таблицы и т. д.) в решении. Хотя 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. Цели (843,5): Ошибка SchemaCompare: дег получить участника недействителен или пуст. в Microsoft.Data.Tools.Schema.Tasks.Sql.SqlSchemaCompareTask.Execute() [C: \ TFS \ Argon_Main Solution_Latest R elease \ Source \ Бла \ SomeData.DataDatabase.sqlproj]

Кто-нибудь есть какие-либо идеи?

Cheers

+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

Я понимаю, что это было некоторое время, так как это было предложено, но я отвечу так или иначе.

Во-первых, мне непонятно, что вы пытаетесь точно сравнить. Вы хотите сравнить две версии проекта, чтобы увидеть различия, или вы сравниваете проект с базой данных?

Я заметил, что вы указываете цель дважды в командной строке. Во-первых, файл .scmp, на который ссылается через параметр SqlScmpFilePath, содержит источник и цель. Во-вторых, параметр цели также определяет цель. Параметр target переопределит все, что находится в файле .scmp.

Возможно, это намеренно, если ваш .scmp-файл имеет нужный источник, но вы хотите указать цель в файле .dacpac.

Файл .dacpac можно найти в папке bin \ Debug или bin \ Release вашего проекта SSDT после сборки. Чтобы ваша команда работала, вам нужно убедиться, что «d: \ target.dacpac» существует и является таким файлом.

The.Файл scmp создается с помощью Schema Compare в Visual Studio, а затем сохраните окно сравнения после выбора источника и цели. Чтобы ваша команда работала, вам нужно убедиться, что существует «d: \ sc.scmp» и является таким файлом.

Пожалуйста, дайте мне знать, если это поможет.

Смежные вопросы