Моя ситуация немного сложна, я надеюсь, что смогу объяснить это правильно: у меня есть решение 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 на основе этого.
Кто-нибудь знает, как это можно сделать?Или есть другое решение, которого я сейчас не вижу?