Предварительная структура API показана на рисунке.

ContractGpdApi — это прямой сборка API. Он имеет ссылку на сборку ContractGpdApi.ServiceInterfaces.
ContractGpdApi.ServiceInterfaces — эта сборка содержит классы DTO (бизнес-модели) и сервисные интерфейсы.
ContractGpdApi.ServiceImplementations — эта сборка содержит классы, реализующие интерфейсы сборки ContractGpdApi.ServiceInterfaces. Сборка адаптирует методы и классы сборки ContractGpdApi.DbServiceInterfaces в методы и классы сборки ContractGpdApi.ServiceInterfaces.
ContractGpdApi.DbServiceInterfaces — эта сборка содержит классы и интерфейсы уровня доступа к базе данных.
ContractGpdApi.DbServiceImplementations — эта сборка содержит классы, реализующие интерфейсы сборки ContractGpdApi.DbServiceInterfaces. Сборка содержит ссылку на сборку ContractGpdApi.DbServiceInterfaces, а также ссылки на сборки microsoft.entityframeworkcore, microsoft.entityframeworkcore.sqlserver.
В итоге я реализовал шаблон Ladder и разделил CUI. на слабосвязанные слои.
Уровень базы данных представлен двумя сборками: ContractGpdApi.DbServiceImplementations и ContractGpdApi.DbServiceInterfaces.
Рабочий уровень бизнеса представлен двумя сборками: ContractGpdApi.ServiceImplementations и ContractGpdApi.ServiceInterfaces.
Соответственно, сборка ContractGpdApi будет своего рода корнем, куда вы загружаете и встраивать зависимости, слабосвязанные сборки.
При загрузке сборок возникают следующие ошибки:
-
< blockquote>
Не удалось загрузить файл или сборку «ContractGpdApi.DbServiceInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null». Указанный файл не найден. -
Не удалось загрузите файл или сборку «Microsoft.EntityFrameworkCore, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60». Указанный файл не найден.

Все остальные сборки загружаются нормально.
Содержимое файла ContractGpdApi.csproj :
Код: Выделить всё
net6.0
Код: Выделить всё
xcopy /y "C:\Git\ContractGpdApi\ContractGpdApi.DbServiceImplementations\bin\Debug\net6.0\*.dll" "C:\Git\ContractGpdApi\ContractGpdApi\bin\Debug\net6.0"
xcopy /y "C:\Git\ContractGpdApi\ContractGpdApi.ServiceImplementations\bin\Debug\net6.0\*.dll" "C:\Git\ContractGpdApi\ContractGpdApi\bin\Debug\net6.0"
Подробнее здесь: https://stackoverflow.com/questions/703 ... assemblies
Мобильная версия