powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Одновременный деплой BASE_CLR.dll и BASE_CLR.XmlSerializers.dll на SQL сервер
4 сообщений из 4, страница 1 из 1
Одновременный деплой BASE_CLR.dll и BASE_CLR.XmlSerializers.dll на SQL сервер
    #38598754
Leax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, может не совсем в тему, однако же задача деплоя из VisualStudio в MS SQL...

Возникла следующая проблема:

в VisualStudio (C#) создана сборка с CLR процедурами для MS SQL; в свойствах проекта установлено Build/Generate serialization assembly= ON и Database/Permission level = EXTERNAL (из процедур вызывается WEB-сервис)

Таким образом, в папке Bin\Debug имеем две dll, одна CLR сборки (CallWorkflowServiceCLR.dll), а вторая с данными сериализации для CLR сборки (CallWorkflowServiceCLR.XmlSerializers.dll).

При деплое на сервере SQL оказывается только сборка с CLR процедурами, но отсутствует сборка с данными сериализации.
Для решения проблемы сейчас приходится каждый раз копировать руками *.XmlSerializers.dll в папку на сервере (D:\CLRProcedure), а затем уже руками её регистрировать:
Код: sql
1.
2.
CREATE ASSEMBLY [CallWorkflowServiceCLR.XmlSerializers] FROM 'D:\CLRProcedure\CallWorkflowServiceCLR.XmlSerializers.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS


Это не совсем удобно, мягко говоря.

Хотел использовать PostDeployScript.sql с командой создания вспомогательной сборки (CallWorkflowServiceCLR.XmlSerializers.dll, см.выше), однако же для этого нужно иметь полный путь к файлу dll, а расшаривать для этого свою папку на локальном компе проблемно, (чтобы сервер оттуда забирал dll) ...

Можно ли как-то без извращений настроить Visual Studio, чтобы она деплоила обе сборки на продуктивный сервер сама?
...
Рейтинг: 0 / 0
Одновременный деплой BASE_CLR.dll и BASE_CLR.XmlSerializers.dll на SQL сервер
    #38598964
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leax,
Ну а в ручную через студию не пробовали, там же и сделать регистрацию, можно имхо через посредника ( howershell)тем же путем
...
Рейтинг: 0 / 0
Одновременный деплой BASE_CLR.dll и BASE_CLR.XmlSerializers.dll на SQL сервер
    #38599469
Leax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так и думал примерно реализовать, спасибо.

Получилось так:
Специально выделил и расшарил на сервере server_name папку D:\CLRProcedure

В студии в свойствах проекта
Post-build event command line:
xcopy /Q /Y "$(TargetDir)*.dll" "\\server_name\CLRProcedure\"

Затем в PostDeployScript.sql
Код: sql
1.
2.
3.
4.
if exists (select * from sys.assemblies where name = 'CallWorkflowServiceCLR.XmlSerializers')
DROP ASSEMBLY [CallWorkflowServiceCLR.XmlSerializers]

CREATE ASSEMBLY [CallWorkflowServiceCLR.XmlSerializers] from 'D:\CLRProcedure\CallWorkflowServiceCLR.XmlSerializers.dll' 
...
Рейтинг: 0 / 0
Одновременный деплой BASE_CLR.dll и BASE_CLR.XmlSerializers.dll на SQL сервер
    #38610061
Leax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал лучше - использовал одну и ту же сетевую расшаренную папку на доступном серваке + копирую в неё конкретную XmlSerializers сборку. так можно легко деплоить CLR-процедуры на любой другой сервер.
В PostBuild event проекта:
Код: powershell
1.
xcopy /Q /Y "$(TargetDir)$(TargetName).XmlSerializers.dll" \\shara\CLRProcedure\



в PostDeployScript.sql (удалять старую сборку не нужно, т.к. удалится сама при деплое):
Код: sql
1.
CREATE ASSEMBLY [CallWorkflowServiceCLR.XmlSerializers] from  '\\shara\CLRProcedure\CallWorkflowServiceCLR.XmlSerializers.dll' 
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Одновременный деплой BASE_CLR.dll и BASE_CLR.XmlSerializers.dll на SQL сервер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]