2015-12-28 5 views
3

Я не могу найти ссылки на то, как упаковать вкладчика развертывания в dacpac.Как упаковать вкладчика развертывания в dacpac?

  1. Мы используем DacServices.Deploy Method для развертывания наших баз данных как dacpacs для SQL Server.
  2. Аргумент этого метода имеет свойство DacDeployOptions.AdditionalDeploymentContributors, которое имеет описание «Указывает дополнительных участников развертывания, которые должны запускаться - в дополнение к тем, которые указаны в dacpac [выделено мной]».

Так что мой вопрос как можно указать этим факторам, способствующим РазВЕРТЫВаНИя в dacpac?

Я попытался помещать класс участника развертывания в проект SSDT в Visual Studio, но это мешает сборке CLR, загружаемой в SQL Server (т. Е. Загружается в SQL Server и если его зависимости также не загружаются , возникает ошибка).

Просьба сообщить. Спасибо.

ответ

1

Чтобы поместить в dacpac, что вы хотите конкретный вклад загружен, то вам необходимо вручную отредактировать файл .sqlproj и добавить:

<PropertyGroup> <DeploymentContributors>$(DeploymentContributors);AgileSqlClub.DeploymentPlanLogger</DeploymentContributors> </PropertyGroup>

ПОСЛЕ

<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" /> Change " AgileSqlClub.DeploymentPlanLogger "независимо от того, как ваш вкладчик экспортирует свое имя (например, [ExportDeploymentPlanModifier (" AgileSqlClub.DeploymentPlanLogger "," 0.1.0.0 ")])

Добавление этого XML заставит ваш «Origin.xml» в вашем dacpac, чтобы иметь это:

<RequiredContributors> <DeploymentContributor Name="AgileSqlClub.DeploymentPlanLogger" Version="0.1.0.0" /> </RequiredContributors> </DeploymentContributors>

Вы, вероятно, один из немногих людей, которые когда-либо использует эту функцию, так что кто знает, если он работает? ? Пусть все знают!

Вам также понадобится развернуть вкладчика на машине, на которой вы строите свой dacpac, и на машине, которую вы развертываете или генерируете сценарий развертывания. На машине будет развернут от:

Путь, который dacfx выглядит найти вкладчиков развертывания жестко закодировано в:

Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ProgramFilesX86), @ "Microsoft SQL Server \ 120 \ DAC \ bin \ Extensions ")

Так что в моей системе это« c: \ program files (x86) \ Microsoft SQL Server \ 120 \ DAC \ bin \ Extensions ».

На машине вы будете использовать при компиляции dacpac вам это нужно в Visual Studio пути, который находится в ссылке:

http://agilesqlclub.codeplex.com/wikipage?title=Deploying&referringTitle=Documentation

Смотрите раздел «Если вы публикуете в SSDT»:

(на моей системе с против 2015 это C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLdb в Lazarus \ DAC \ 120 \ Extensions)

Еще одна вещь что, когда вы копируете своего вкладчика в t он расширяет каталоги, вы можете поместить их в другую папку, чтобы вы могли сохранить свои расширения и любые зависимости, которые были отделены от любых других участников, у которых будет свой собственный набор зависимостей (и dll hell умирает с .net lol)

Из интересно, что делает ваш вкладчик?

Если ОСС пожалуйста рассмотреть вопрос об обмене его:

https://github.com/DacFxDeploymentContributors/Contributors

Ed

+0

Вкладчик развертывание участвует в обновлении данных. У нас есть некоторые данные, которые требуют некоторой трансформации с сторонними сборками, и мы пытаемся использовать вкладчиков для развертывания в качестве возможного решения. –

+0

ОК, извините, я перечитываю ваш вопрос и надеюсь, что на этот раз это лучше ответит :) –

+0

Вы уверены в том, что жестко закодированный путь? Мы вытаскиваем Microsoft.SqlServer.Dac с NuGet, так что путь не обязательно существует. –