Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server数据工具:加载自定义DeploymentPlanModifier时出错:无法加载id为的必需参与者_Sql Server_Sql Server Data Tools - Fatal编程技术网

Sql server SQL Server数据工具:加载自定义DeploymentPlanModifier时出错:无法加载id为的必需参与者

Sql server SQL Server数据工具:加载自定义DeploymentPlanModifier时出错:无法加载id为的必需参与者,sql-server,sql-server-data-tools,Sql Server,Sql Server Data Tools,我需要截取一个SSDT构建来修改构建脚本。我遵循了,但当我尝试构建数据库项目时,出现以下错误: Required contributor with id 'MyDeploymentContributor.SqlRestartableScriptContributor' could not be loaded. 我正在使用Visual Studio 2012(版本11.0.61219.00更新5)和SSDT版本11.1.50730.0 我对程序集进行了签名,但没有指定密码 我在网上找到了几种解决

我需要截取一个SSDT构建来修改构建脚本。我遵循了,但当我尝试构建数据库项目时,出现以下错误:

Required contributor with id 'MyDeploymentContributor.SqlRestartableScriptContributor'
could not be loaded.
我正在使用Visual Studio 2012(版本11.0.61219.00更新5)和SSDT版本11.1.50730.0

我对程序集进行了签名,但没有指定密码

我在网上找到了几种解决方案,但都没有效果,包括:

  • 更新visualstudio和SSDT
  • 正在将MyDeploymentContributor.dll和MyDeploymentContributor.pdb复制到以下位置:

  • C:\ProgramFiles(x86)\Microsoft SQL Server\110\DAC\bin\Extensions
  • C:\ProgramFiles(x86)\Microsoft SQL Server\110\DAC\bin
  • C:\ProgramFiles(x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120
  • C:\ProgramFiles(x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions
  • 捕获SSDT和DacFx的事件日志(按照Kevin Cunnane的指示)。以下是DacFx日志的结果:

    • 核心服务:SafeDirectoryCatalog:Assembly
      C:\Program Files
      (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Micrsoft\SQLDB\DAC\120\Extensions\MyDeploymentContributor.dll
      增加
    • 核心服务:扩展查找:目录
      C:\程序文件
      (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Micrsoft\SQLDB\DAC\120\Extensions
      添加到扩展查找路径
    • 核心服务:FilteringCompositionContainer:查找的导出
      Microsoft.SqlServer.Dac.Deployment.DeploymentPlanExecutor
    • 核心服务:FilteringCompositionContainer:更改的部件创建策略 不分
    • 核心服务:FilteringCompositionContainer:查找的导出
      Microsoft.SqlServer.Dac.Deployment.DeploymentPlanModifier
  • 没有
    ContributorLoader
    消息。从该日志中,参与者似乎正在正确加载。SSDT日志不包含任何提到贡献者的事件

    没有必需的contributor参数,因此.sqlproj文件中的
    DeploymentContributor
    节点如下所示:

    <PropertyGroup>
        <DeploymentContributors>
            $(DeploymentContributors); MyDeploymentContributor.SqlRestartableScriptContributor
        </DeploymentContributors>
    </PropertyGroup>
    
    
    $(部署贡献者);MyDeploymentContributor.SqlRestartableScriptContributor
    
    感谢您的帮助。谢谢

    多亏了Ed Elliot(),我才能够解决我的问题

    我听从了埃德的建议,结果成功了。我创建了一个类似
    C:\ProgramFiles(x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions\[YourContributorName]\
    的文件夹,并将
    C:\ProgramFiles(x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120
    中的所有内容(包括DLL)复制到那里

    在contributor项目中,我引用了
    C:\ProgramFiles(x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions\[YourContributorName]\

    成功构建项目后,我将contributor.dll和.pdb文件复制到以下位置:

    C:\ProgramFiles(x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions\[YourContributorName]\

    以前,我是从
    C:\ProgramFiles(x86)\MicrosoftSQLServer\110\DAC\bin
    引用DLL的


    希望这能对其他人有所帮助。

    你能发布你的贡献者方法(OnExecute?)的导出吗?请同时从中获取一个示例,看看是否有效?日志记录是一个很好的方法,可以查看所有设置是否正确。我的OneExecute方法是从中复制的,如下所示:。我尝试使用您提供的github链接中的贡献者,得到了与之前相同的错误(以及相同的DacFx日志条目)。Palladian,我面临着完全相同的问题(在我的案例中,是VS 2013)。您是否能够找到此问题的解决方案。另外,我们是否需要将MyRefKey.snk与dll一起复制到extensions文件夹中?我真的很喜欢这样的工具总是告诉您有什么问题,而从不告诉您什么问题以及如何解决。要补充一点:如果您使用DacFx nuget包(或程序集)以编程方式发布,程序集需要位于当前目录中名为“Extensions\[YourContributorName]的子目录中`