Подтвердить что ты не робот

SQL SMO сборки не развертываются при публикации

У меня есть небольшая проблема с развертыванием ряда сборок, связанных с SMO. У меня есть следующие 5 ссылок в моем проекте:

enter image description here

Каждый из них является DLL файлом в папке библиотек, в которую были добавлены ссылки, и для каждого из них установлено значение Копировать Local = true. Файл проекта показывает все это в порядке, например:

<Reference Include="Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
  <HintPath>..\Libraries\Microsoft.SqlServer.Smo.dll</HintPath>
  <Private>True</Private>
</Reference>

Проблема в том, что каждый раз, когда я публикую Visual Studio на своем ПК, сборки не копируются. То же самое, когда я публикую через TeamCity (который определенно не имеет SQL Server или SMO ​​SDK). Я могу скопировать сборки вручную, и все работает нормально (без зависимости от GAC), но, очевидно, я хотел бы инкапсулировать это в процессе развертывания.

Что может помешать публикации этих сборников?

4b9b3361

Ответ 1

Я считаю, что вы не должны просто копировать DLL при развертывании приложения на основе SMO. См. Эту ссылку: Распространение приложения, использующего объекты управления SQL Server. Я цитирую:

Если вы разрабатываете приложение, использующее объекты управления SQL Server, вам необходимо убедиться, что необходимые файлы поддержки присутствуют на компьютер с приложением. Пакет функций SQL Server 2008 содержит распространяемый пакет для управления SQL Server Объекты.

Вам нужно будет получить SharedManagementObjects.msi из этой ссылки для скачивания: http://www.microsoft.com/download/en/details.aspx?id=16978

Ответ 2

Сотрудник Microsoft Моника Ривера подтвердила в поток MSDN, что это прекрасно, чтобы связать DLL с вашим приложением:

Здесь другой путь. Вы можете включить необходимые библиотеки DLL в свою сборку из проекта VS. Если вы выберите ссылку в проекте и измените свойство "Скопировать местное" на "Истина", соответствующая DLL будет включена в сборку.

Итак, в соответствии с потоком MSDN оба решения в порядке.