SqlPackage.exe: Required contributor with id ‘id’ could not be loaded

153次阅读
没有评论

问题描述

在使用 SqlPackage.exe 构建 dacpac 时,遇到了以下错误:

Microsoft.SqlServer.Dac.DacServicesException: An error occurred during deployment plan generation. Deployment cannot continue.Error SQL0: Required contributor with id 'BcDevKit.DeploymentContributors.DacMacroSqlDeploymentContributor' could not be loaded.

用户已经找到了解决方法,但是希望能够将 sqlpackage.exe 仅搜索 Visual Studio 目录中的 contributors。请问有什么办法可以实现吗?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

这个问题的原因是用户引用的 sqlpackage.exe 来自于 C:\Program Files (x86)\Microsoft SQL Server\150\DAC\bin 目录,所以它会在其子目录 Extensions 中查找 contributor。
用户可以尝试在 Visual Studio 安装目录中寻找 sqlpackage.exe,并将其路径更新到环境变量中。以下是具体步骤:
1. 打开 Visual Studio 安装目录,例如 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150
2. 找到 sqlpackage.exe 文件。
3. 将该路径添加到环境变量中。
4. 重新运行 sqlpackage.exe。
这样,sqlpackage.exe 将只在 Visual Studio 目录中搜索 contributors。

方案2

另一种解决方法是使用完整的路径来运行 sqlpackage.exe。用户可以直接在命令行中指定 sqlpackage.exe 的完整路径,而不依赖于环境变量。以下是具体步骤:
1. 打开命令提示符或 PowerShell。
2. 输入以下命令,将路径替换为 sqlpackage.exe 的实际路径:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150\sqlpackage.exe"
  1. 按 Enter 键运行命令。
    这样,sqlpackage.exe 将只在指定的路径中搜索 contributors。

方案3

如果用户希望在使用 sqlpackage.exe 时只搜索 Visual Studio 目录中的 contributors,可以将 sqlpackage.exe 的路径添加到系统的 PATH 环境变量中,并将其放在 Visual Studio 目录之前。以下是具体步骤:
1. 打开系统的环境变量设置。
2. 找到 PATH 变量,并编辑它。
3. 将 sqlpackage.exe 的路径添加到 PATH 变量中,并将其放在 Visual Studio 目录之前。
4. 保存更改并关闭环境变量设置。
5. 重新运行 sqlpackage.exe。
这样,sqlpackage.exe 将首先在 Visual Studio 目录中搜索 contributors。
以上是几种解决方案,用户可以根据自己的需求选择适合的方法来解决这个问题。

正文完