Ссылки на сборки при выполнении сценариев приложения U-SQL для локального проекта - PullRequest
0 голосов
/ 20 мая 2019

У меня есть проект БД U-SQL (USQLdb), который определяет базу данных U-SQL и ее составные таблицы, процедуры и т. Д. Этот проект также ссылается на две сборки для использования в одной из хранимых процедур.Файлы DLL хранятся в папке с именем assemblies в папке U-SQL Data Root и на нее ссылаются в базе данных с помощью следующего сценария:

CREATE ASSEMBLY IF NOT EXISTS [Microsoft.Analytics.Samples.Formats]
FROM "/assemblies/Microsoft.Analytics.Samples.Formats.0.0.0.0/Microsoft.Analytics.Samples.Formats.dll";

Это работает при развертывании на Local-machine или наAzure.

Для целей тестирования я добавил проект приложения U-SQL (USQLScripts), который ссылается на USQLdb, со сценариями U-SQL, которые выполняют хранимую процедуру, каждый с целью настройки модуля.Тестирование.

Однако при попытке запустить эти сценарии для Local-project: USQLdb развертывание базы данных завершается неудачно.Из журналов это происходит потому, что сценарий развертывания USQLdb не может найти ссылочные сборки в корневой папке данных Local-project:

*** Error : (204,6) 'Assembly file 'C:\<Solution Folder>\USQLScripts\bin\Debug\DataRoot\assemblies/Microsoft.Analytics.Samples.Formats.0.0.0.0/Microsoft.Analytics.Samples.Formats.dll' could not be read.'

Я указал USQLScripts Test Data Source как локальная корневая папка данных U-SQL, которая копирует все найденные файлы в рабочий каталог Local-project здесь:

C:\<Solution Folder>\USQLScripts\bin\Debug\USQLScripts_altdata_5qktnwfj.gln\data'

, хотя согласно сообщению об ошибке выше, USQLdb Ссылка на сборку пытается найтиих здесь:

C:\<Solution Folder>\USQLScripts\bin\Debug\DataRoot

Поскольку папка DataRoot полностью очищается и воссоздается при каждом выполнении Local-project, как я могу либо получить сборки в папку DataRoot при выполнении, либо ссылаться на них произвольно безизменение адреса в ранее включенном сценарии U-SQL, который работает как требуется при развертывании в Azure?


Получается, что если я удалю ссылку на базу данных U-SQL в USQLScripts, файлынаходящиеся в папке Test Data Source теперь копируются в папку C:\<Solution Folder>\USQLScripts\bin\Debug\DataRoot, но сценарии не могут быть выполнены, поскольку база данных, к которой они пытаются выполнить, не была указана.У меня создается впечатление, что я либо что-то упустил, либо столкнулся с ошибкой / непреднамеренным поведением ...

1 Ответ

1 голос
/ 21 мая 2019

Оказывается, я что-то упустил.

То, что я считал ошибкой в ​​ссылках на сборки, на самом деле было ошибкой при построении проекта USQLdb, в результате чего сборки были недоступны, а красная селедкаиз-за ошибки.

Причиной был Target Framework Version сборок, превышающих оба проекта USQLdb и USQLScripts.Похоже, что это можно изменить только путем редактирования файлов .usqldbproj вручную в текстовом редакторе (в частности, значение <TargetFrameworkVersion>), поскольку в пользовательском интерфейсе Visual Studio нет возможности редактировать это свойство проекта, которое я могу найти.

Как только я поднял Target Framework Version в проектах U-SQL, чтобы они соответствовали сборкам, все теперь строит, развертывает и выполняет, как и ожидалось.

...