#c# #sql-server #visual-studio #publish #sqlclr
Вопрос:
Microsoft SQL Server 2019 15.0.2000.5
Сообщество Microsoft Visual Studio 2019 Версии 16.11.2
Microsoft .NET Framework Версии
4.8.04084 Средства обработки данных SQL Server 16.0.62107.28140
При публикации кода C# CLR в Visual Studio я хотел бы предоставить свой собственный сценарий для создания некоторых сборок. В действии сборки я вижу варианты «перед развертыванием» (которые я успешно использовал) и «после развертывания», но для простого «развертывания»их нет. Вместо этого VS генерирует свой собственный сценарий создания сборки, который завершается неудачей. Поскольку у меня уже есть один написанный, который увенчается успехом, я хотел бы либо:
- Заставьте его использовать сценарий, который я написал сам, или
- Отключите генерацию этого сценария и просто используйте сценарий перед развертыванием
Я чувствую, что это должно быть очевидно, но если это так, то я не придумал правильные условия поиска.
Причина развертывания через VS вместо SSMS заключается в том, что я могу отлаживать код. Набор результатов, который я возвращаю из функции, иногда взрывается. Насколько я понимаю из документации MS, я могу отлаживать только при развертывании через VS.
Комментарии:
1. Тогда зачем вообще использовать Visual Studio / SSDT, по крайней мере, для этого конкретного проекта? Если у вас уже есть сценарий развертывания для сборки и связанных с ней объектов-оболочек T-SQL, то, похоже, у вас уже есть все необходимое. Какую выгоду предлагает VS / SSDT на данный момент?
2. Я хочу отладить код, потому что набор результатов, который я возвращаю из функции, иногда взрывается. Насколько я понимаю из документации MS, я могу отлаживать только при развертывании через VS. Я добавлю это разъяснение к вопросу.
3. Мне было бы любопытно узнать о причинах/обосновании возможности отладки, привязанной к развертыванию VS. Я видел сборки, развернутые с отладочной информацией. Но как только они появятся, я бы предположил, что у VS достаточно возможностей для подключения к отладке. И вы можете добавить отладочную информацию в сборки с помощью «изменить сборку… добавить файл».
4. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.
Ответ №1:
В результате неправильного понимания процесса я неправильно сформулировал свой вопрос. То, что я пытался, было двумя разными вещами, ни одна из которых не была правильной.
С помощью моего сценария перед развертыванием я бы:
а) Создал асимметричный ключ
б) Создал логин
в) Создал пользователя
г) предоставил разрешения для входа
в систему д) создал сборку
Я подозреваю, что это могло бы быть нормально, если бы я не поставил в своем сценарии префикс имени сборки с CLR. Когда сгенерированный сценарий затем попытается создать сборку, он получит ошибку, основанную на существующей сборке (но с другим именем), вместо того, чтобы перезаписать ее. Я подумал, что, возможно, мне нужно сказать сгенерированному сценарию, чтобы он использовал другое имя (или подавил генерацию сценария).
Поэтому я попытался все бросить и запустить развертывание. Мое ошибочное предположение состоит в том, что сгенерированное развертывание будет/может/должно написать ключ, логин, пользователя, потому что в нем есть информация SNK в проекте. Это, конечно, не делало этого.
Решение, конечно, состояло в том, чтобы я удалил этап создания сборки из своего сценария перед развертыванием, сохранив при этом создание ключа, логина, пользователя. Затем он успешно создал сборку.