2015-12-29 1 views
9

Мне нужно перехватить сборку SSDT, чтобы изменить скрипт сборки. Я следовал MSDN Deployment Plan Modifier tutorial, но когда я пытаюсь построить проект базы данных, я получаю следующее сообщение об ошибке:Инструменты данных SQL Server: ошибка загрузки пользовательского DeploymentPlanModifier: Обязательный вкладчик с идентификатором не может быть загружен

Required contributor with id 'MyDeploymentContributor.SqlRestartableScriptContributor' 
could not be loaded. 

Я использую Visual Studio 2012 (версия 11.0.61219.00 Update 5) и SSDT Версия 11.1.50730.0 ,

Я подписал сборку, но не указал пароль.

Я следовал несколько решений, я нашел в Интернете, чтобы не дало никаких результатов, в том числе следующие:

  1. Обновление Visual Studio и SSDT;
  2. Копирование MyDeploymentContributor.dll и MyDeploymentContributor.pdb в следующих местах:

    1. C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Extensions
    2. C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin
    3. C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120
    4. C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions
  3. Захватив журнал событий для SSDT и DacFx (fo не давая указания Кевину Куньяну по телефону https://social.msdn.microsoft.com/Forums/en-US/5c84ab8e-b50b-4ecd-86da-866ac3bb2248/known-issue-with-ssdt-extensibility-in-current-release?forum=ssdt). Вот результаты из журнала DacFx:

    • Основные услуги: SafeDirectoryCatalog: Сборка C:\Program Files (x86)\Microsoft Visual Stusio 11.0\Common7\IDE\Extensions\Micrsoft\SQLDB\DAC\120\Extensions\MyDeploymentContributor.dll добавил
    • Core Services: Расширение подстановок: каталог C:\Program Files (x86)\Microsoft Visual Stusio 11.0\Common7\IDE\Extensions\Micrsoft\SQLDB\DAC\120\Extensions добавлен в расширение поиска пути
    • Core Services: FilteringCompositionContainer: Подняв экспорт для Microsoft.SqlServer.Dac.Deployment.DeploymentPlanExecutor
    • Core Services: FilteringCompositionContainer: Изменена политика создания части к NonShared
    • Основные услуги: FilteringCompositionContainer: Глядя экспорт для Microsoft.SqlServer.Dac.Deployment.DeploymentPlanModifier

Там не было никаких сообщений ContributorLoader. Из этого журнала вкладчик, кажется, правильно загружается. В журнале SSDT не было никаких событий, которые упомянули вкладчика.

Там нет необходимых аргументов вкладчика, поэтому DeploymentContributor узла в моем файле .sqlproj выглядит следующим образом:

<PropertyGroup> 
    <DeploymentContributors> 
     $(DeploymentContributors); MyDeploymentContributor.SqlRestartableScriptContributor 
    </DeploymentContributors> 
</PropertyGroup> 

Любой помощь приветствуется. Благодаря!

+0

Можете ли вы опубликовать экспорт метода вашего вкладчика (OnExecute?), Пожалуйста, также возьмите образец из https://github.com/DacFxDeploymentContributors/Contributors и посмотрите, работает ли это? Запись является хорошей, чтобы убедиться, что все правильно настроено. –

+0

Мой метод OnExecute копируется с [https://msdn.microsoft.com/en-us/library/ee461507 (v = vs.100) .aspx] (https://msdn.microsoft.com/en-us/library/ee461507(v=vs.100).aspx) и выглядит следующим образом: [http://pastebin.com/CYYv8ZsE](http://pastebin. ком/CYYv8ZsE). Я попытался использовать вкладчиков из предоставленной вами ссылки github и получил ту же ошибку (и те же записи журнала DacFx), что и раньше. – Palladian1881

+0

Palladian, я столкнулся с такой же проблемой (в моем случае это VS 2013). Могли ли вы найти решение этой проблемы. Кроме того, нужно ли скопировать MyRefKey.snk вместе с dll в папку расширений? –

ответ

2

Благодаря Ed Elliot (https://the.agilesql.club/Blogs/Ed-Elliott/About), я смог решить эту проблему в моем случае.

Я следил за предложениями Эд, и это сработало.Я создал папку, такую ​​как C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions\[YourContributorName]\, и скопировал все содержимое (включая библиотеки DLL) с C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120 туда.

В проекте вкладчиком, я ссылается на DLL, внутри C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\Extensions\[YourContributorName]\

После того, как проект был построен успешно, я скопировал вкладчик .dll и .pdb файлы в следующей папке:

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

Раньше я ссылался на DLL от C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin.

Надеюсь, это поможет кому-то.

+0

Мне очень нравится, когда такие инструменты всегда говорят вам, что что-то не так, и никогда не говорите вам, что не так, и как вы можете это исправить. –

Смежные вопросы