【问题标题】:Need to specify the Microsoft.Data.Tools.Schema.Tasks.Sql version explicitly in a Visual Studio database project需要在 Visual Studio 数据库项目中明确指定 Microsoft.Data.Tools.Schema.Tasks.Sql 版本
【发布时间】:2019-04-09 19:56:31
【问题描述】:

我的情况有点复杂,希望我能正确解释:我有一个 Visual Studio 解决方案,用于构建 WiX 安装程序。除其他外,此安装程序通过 dacpac 部署 SQL DB 模式。此 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.

这与此线程Latest SSDT vs. SqlPackage incompatibility for SQL Server 2014 中描述的情况类似,除了我没有使用 SqlPackage.exe 部署 dacpac,而是 WiX 安装程序正在执行此操作,因此使用更新的 SqlPackage 的解决方案。 exe 版本不适合我。

此外,我的解决方案中部署 dacpac 文件的自定义操作项目绑定到 .net 4.5.1。这是一个产品限制,所以使用更新的 .net 版本对我来说也不是解决方案。

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

不兼容的原因是 dacpac 文件是针对较新的 Data.Tools.Schema 版本生成的。从 dacpac 中的 Origin.xml 中提取:

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

这会导致 dacpac 文件中的 model.xml 包含一些花哨的标签,部署自定义操作使用的 Microsoft.Data.Tools.Schema.Sql.Deployment 版本 12 无法理解(如错误消息中所示) .

所以我认为我唯一的解决方案是明确告诉 Visual Studio 使用 12 版的 Data.Tools.Schema 生成 dacpac 文件,而不是默认选择 14 版,但我没有找到任何地方在可以指定 Data.Tools.Schema 版本的 DB 项目属性中。我想 VS 只是获得了它可以在构建机器上找到的最新 DAC 版本并基于它生成 dacpac。

有谁知道如何做到这一点?还是有其他我目前没有看到的解决方案?

【问题讨论】:

    标签: sql-server wix dacpac sqlpackage data-tier-applications


    【解决方案1】:

    在数据库项目中,转到选项卡项目 -> 属性...

    在项目设置中,选择适当的目标平台。

    例如,SQL Server 2017 将生成 dacpac 版本 14。 对于版本 12,选择 SQL Server 2014。

    保存设置并重新编译项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-15
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多