Необходимо явно указать версию Microsoft.Data.Tools.Schema.Tasks.Sql в проекте базы данных Visual Studio. - PullRequest
0 голосов
/ 28 ноября 2018

Моя ситуация немного сложна, я надеюсь, что смогу объяснить это правильно: у меня есть решение Visual Studio, которое я использую для создания установщика WiX.Этот установщик, помимо прочего, развертывает схему БД SQL через dacpac.Этот dacpac генерируется проектом SQL Server 2014 в том же решении.

В настоящее время установка завершается неудачно, когда она достигает этапа, на котором необходимо развернуть сгенерированный dacpac.Ошибка выглядит следующим образом:

Microsoft.Data.Tools.Schema.Sql.Deployment.DeploymentFailedException: The Element or Annotation class PersistedResolvableAnnotation does not contain the Property class Length. ---> 
Microsoft.Data.Tools.Schema.SchemaModel.ModelSerializationException: The Element or Annotation class PersistedResolvableAnnotation does not contain the Property class Length.

Это похоже на ситуацию, описанную в этой теме Последняя несовместимость SSDT и SqlPackage для SQL Server 2014 , за исключением того, что я не являюсьразвертывание dacpac с использованием SqlPackage.exe, но установщик WiX делает это, поэтому решение использования более новой версии SqlPackage.exe не работает для меня.

Кроме того, проект Custom Action из моего решения,который развертывает файл dacpac, привязан к .net 4.5.1.Это ограничение продукта, поэтому использование более новой версии .net для меня также не является решением.

  <package id="Microsoft.DataTierAppFramework" version="12.0.1295" targetFramework="net451" />

Несовместимость возникает из-за того, что файл dacpac каким-то образом генерируется для более новых Data.Tools.Версия схемы.Извлечение из Origin.xml в dacpac:

<ProductName>Microsoft.Data.Tools.Schema.Tasks.Sql, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</ProductName>
<ProductVersion>14.0.60519.0</ProductVersion>

. В этом случае файл model.xml из файла dacpac включает некоторые необычные теги, которые используются версией 12 Microsoft.Data.Tools.Schema.Sql.Deployment, используемойпользовательское действие развертывания не понимает (как показано в сообщении об ошибке).

Таким образом, я полагаю, что мое единственное решение - явное указание Visual Studio создать файл dacpac с использованием версии 12 объекта Data.Tools..Schema вместо этого выбрал версию 14 по умолчанию, но я не нашел никакого места в свойствах проекта БД, где можно было бы указать версию Data.Tools.Schema.Я предполагаю, что VS просто получает последнюю версию DAC, которую он может найти на сборочной машине, и генерирует dacpac на основе этого.

Кто-нибудь знает, как это можно сделать?Или есть другое решение, которого я сейчас не вижу?

1 Ответ

0 голосов
/ 09 апреля 2019

В проекте базы данных перейдите на вкладку Проект -> свойства ...

В настройках проекта выберите соответствующую целевую платформу.

Например, SQL Server 2017 сгенерирует dacpacверсия 14. Для версии 12 выберите SQL Server 2014.

Сохраните настройки и перекомпилируйте проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...