Сообщение Re[2]: Customization with assembly от 13.04.2023 12:44
Изменено 13.04.2023 12:55 Berill
Re[2]: Customization with assembly
Здравствуйте, Mace Windu, Вы писали:
MW>Здравствуйте, Berill, Вы писали:
B>>Создал консольное приложение, добавил Project Reference на библиотеку с кастомизациями.
B>>
B>>В терминале выполняю команду:
B>>
B>>В результате получаю ошибку:
B>>
B>>В каталоге "bin\Debug\netcoreapp3.1" нет только одного файла: DataModelsCustomization.deps.json.
MW>Проблема понятна.
MW>Мы используем два варианта загрузки интерцептора из dll:
MW>- если есть .deps.json файл : загружаем через DependencyContext.Load, который использует deps.json для поиска зависимостей
MW>- если файла зависимостей нет то дополнительные зависимости ищутся в той же папке где и сборка с интерцептором
MW>В данном случае так как зачем-то проект интерцептора сбилжен через ProjectReference, то deps.json не от него и вызов DependencyContext.Load обламывается. В принципе наша ошибка, надо имя файла более строго проверять.
MW>Но в целом надо было сбилдить интерцептор отдельно, как было сделано ниже.
B>>Как только я его копирую вручную из каталога куда складывается результат сборки библиотеки "DataModelsCustomization\bin\Debug\netcoreapp3.1", все проходит успешно, модели генерируются. Пока что никак не могу найти способа его автоматического копирования при сборке проекта.
MW>Не очень понятно зачем его вообще подключать референсом, я сомневаюсь что вы планируете код из него в основном проекте использовать. Но если всё-же надо, то можно добавить post-build команду в проект.
B>>Можно конечно выполнить терминальную команду, находясь в каталоге библиотеки
B>>Но я хочу, чтобы модели данных были в проекте приложения. Или действительно надо генерировать модели в проекте с кастомизациями?
B>>Как вариант, еще можно добавить поле output в json файл.
MW>Ну мы не ограничиваем пользователя местом где генерировать. output для этого и сделан.
B>>UPD:
B>>Убрал Project Reference на библиотеку с кастомизацией и выполнил команду
B>>
B>>Может именно такая команда и имелась в виду в документации?!
MW>именно
Спасибо за ваши ответы.
Есть еще один вопрос, который меня интересует. В своем проекте мы генерирурем enum на основе данных из определенной таблицы с помощью Т4.
Как это сделать с новым инструментом
MW>Здравствуйте, Berill, Вы писали:
B>>Создал консольное приложение, добавил Project Reference на библиотеку с кастомизациями.
B>>
B>> <ProjectReference Include="..\DataModelsCustomization\DataModelsCustomization.csproj" />
B>>B>>В терминале выполняю команду:
B>>
B>>D:\PROJECTS\Examples\Linq2Db.NetCore\Linq2Db.NetCore\DataModels> dotnet linq2db scaffold -i database.json --customize ..\bin\Debug\netcoreapp3.1\DataModelsCustomization.dll
B>>B>>В результате получаю ошибку:
B>>
B>>AssemblyResolve path: D:\PROJECTS\Examples\Linq2Db.NetCore\Linq2Db.NetCore\bin\Debug\netcoreapp3.1
B>>Unhandled exception: DependencyContext.Load cannot load interceptor assembly
B>>В каталоге "bin\Debug\netcoreapp3.1" нет только одного файла: DataModelsCustomization.deps.json.
MW>Проблема понятна.
MW>Мы используем два варианта загрузки интерцептора из dll:
MW>- если есть .deps.json файл : загружаем через DependencyContext.Load, который использует deps.json для поиска зависимостей
MW>- если файла зависимостей нет то дополнительные зависимости ищутся в той же папке где и сборка с интерцептором
MW>В данном случае так как зачем-то проект интерцептора сбилжен через ProjectReference, то deps.json не от него и вызов DependencyContext.Load обламывается. В принципе наша ошибка, надо имя файла более строго проверять.
MW>Но в целом надо было сбилдить интерцептор отдельно, как было сделано ниже.
B>>Как только я его копирую вручную из каталога куда складывается результат сборки библиотеки "DataModelsCustomization\bin\Debug\netcoreapp3.1", все проходит успешно, модели генерируются. Пока что никак не могу найти способа его автоматического копирования при сборке проекта.
MW>Не очень понятно зачем его вообще подключать референсом, я сомневаюсь что вы планируете код из него в основном проекте использовать. Но если всё-же надо, то можно добавить post-build команду в проект.
B>>Можно конечно выполнить терминальную команду, находясь в каталоге библиотеки
B>>Но я хочу, чтобы модели данных были в проекте приложения. Или действительно надо генерировать модели в проекте с кастомизациями?
B>>Как вариант, еще можно добавить поле output в json файл.
MW>Ну мы не ограничиваем пользователя местом где генерировать. output для этого и сделан.
B>>UPD:
B>>Убрал Project Reference на библиотеку с кастомизацией и выполнил команду
B>>
dotnet linq2db scaffold -i database.json --customize ..\..\DataModelsCustomization\bin\Debug\netcoreapp3.1\DataModelsCustomization.dllB>>Может именно такая команда и имелась в виду в документации?!
MW>именно
Спасибо за ваши ответы.
Есть еще один вопрос, который меня интересует. В своем проекте мы генерирурем enum на основе данных из определенной таблицы с помощью Т4.
Как это сделать с новым инструментом
Re[2]: Customization with assembly
Здравствуйте, Mace Windu, Вы писали:
MW>Здравствуйте, Berill, Вы писали:
B>>Создал консольное приложение, добавил Project Reference на библиотеку с кастомизациями.
B>>
B>>В терминале выполняю команду:
B>>
B>>В результате получаю ошибку:
B>>
B>>В каталоге "bin\Debug\netcoreapp3.1" нет только одного файла: DataModelsCustomization.deps.json.
MW>Проблема понятна.
MW>Мы используем два варианта загрузки интерцептора из dll:
MW>- если есть .deps.json файл : загружаем через DependencyContext.Load, который использует deps.json для поиска зависимостей
MW>- если файла зависимостей нет то дополнительные зависимости ищутся в той же папке где и сборка с интерцептором
MW>В данном случае так как зачем-то проект интерцептора сбилжен через ProjectReference, то deps.json не от него и вызов DependencyContext.Load обламывается. В принципе наша ошибка, надо имя файла более строго проверять.
MW>Но в целом надо было сбилдить интерцептор отдельно, как было сделано ниже.
B>>Как только я его копирую вручную из каталога куда складывается результат сборки библиотеки "DataModelsCustomization\bin\Debug\netcoreapp3.1", все проходит успешно, модели генерируются. Пока что никак не могу найти способа его автоматического копирования при сборке проекта.
MW>Не очень понятно зачем его вообще подключать референсом, я сомневаюсь что вы планируете код из него в основном проекте использовать. Но если всё-же надо, то можно добавить post-build команду в проект.
B>>Можно конечно выполнить терминальную команду, находясь в каталоге библиотеки
B>>Но я хочу, чтобы модели данных были в проекте приложения. Или действительно надо генерировать модели в проекте с кастомизациями?
B>>Как вариант, еще можно добавить поле output в json файл.
MW>Ну мы не ограничиваем пользователя местом где генерировать. output для этого и сделан.
B>>UPD:
B>>Убрал Project Reference на библиотеку с кастомизацией и выполнил команду
B>>
B>>Может именно такая команда и имелась в виду в документации?!
MW>именно
Спасибо за ваши ответы.
MW>Здравствуйте, Berill, Вы писали:
B>>Создал консольное приложение, добавил Project Reference на библиотеку с кастомизациями.
B>>
B>> <ProjectReference Include="..\DataModelsCustomization\DataModelsCustomization.csproj" />
B>>B>>В терминале выполняю команду:
B>>
B>>D:\PROJECTS\Examples\Linq2Db.NetCore\Linq2Db.NetCore\DataModels> dotnet linq2db scaffold -i database.json --customize ..\bin\Debug\netcoreapp3.1\DataModelsCustomization.dll
B>>B>>В результате получаю ошибку:
B>>
B>>AssemblyResolve path: D:\PROJECTS\Examples\Linq2Db.NetCore\Linq2Db.NetCore\bin\Debug\netcoreapp3.1
B>>Unhandled exception: DependencyContext.Load cannot load interceptor assembly
B>>В каталоге "bin\Debug\netcoreapp3.1" нет только одного файла: DataModelsCustomization.deps.json.
MW>Проблема понятна.
MW>Мы используем два варианта загрузки интерцептора из dll:
MW>- если есть .deps.json файл : загружаем через DependencyContext.Load, который использует deps.json для поиска зависимостей
MW>- если файла зависимостей нет то дополнительные зависимости ищутся в той же папке где и сборка с интерцептором
MW>В данном случае так как зачем-то проект интерцептора сбилжен через ProjectReference, то deps.json не от него и вызов DependencyContext.Load обламывается. В принципе наша ошибка, надо имя файла более строго проверять.
MW>Но в целом надо было сбилдить интерцептор отдельно, как было сделано ниже.
B>>Как только я его копирую вручную из каталога куда складывается результат сборки библиотеки "DataModelsCustomization\bin\Debug\netcoreapp3.1", все проходит успешно, модели генерируются. Пока что никак не могу найти способа его автоматического копирования при сборке проекта.
MW>Не очень понятно зачем его вообще подключать референсом, я сомневаюсь что вы планируете код из него в основном проекте использовать. Но если всё-же надо, то можно добавить post-build команду в проект.
B>>Можно конечно выполнить терминальную команду, находясь в каталоге библиотеки
B>>Но я хочу, чтобы модели данных были в проекте приложения. Или действительно надо генерировать модели в проекте с кастомизациями?
B>>Как вариант, еще можно добавить поле output в json файл.
MW>Ну мы не ограничиваем пользователя местом где генерировать. output для этого и сделан.
B>>UPD:
B>>Убрал Project Reference на библиотеку с кастомизацией и выполнил команду
B>>
dotnet linq2db scaffold -i database.json --customize ..\..\DataModelsCustomization\bin\Debug\netcoreapp3.1\DataModelsCustomization.dllB>>Может именно такая команда и имелась в виду в документации?!
MW>именно
Спасибо за ваши ответы.