к силосам.
                  
                  
                  
                  
                  
                  Генерим апи контроллеры по грейнам через Source Generator.
                  
                  
                  Соответственно: интерфейс грейна = контроллер, метод грейна = экшн. И сам контроллер, получается, дёргает грейны.
                  
                  
                  
                  
                  
                  Все аргументы метода грейна оборачиваем в сгенерированный реквест класс.
                  
                  
                  
                  
                  
                  Итого получается следующая структура проектов:
                  
                  
                  
                  
                  
                  XZ.Models - доменная модель
                  
                  
                  XZ.Grains.Interfaces - интерфейсы грейнов
                  
                  
                  XZ.Grains - реализация грейнов
                  
                  
                  XZ.ApiService - фасад, который ссылается на модели и интерфейсы
                  
                  
                  XZ.ApiService.Client - rest клиент, ссылается на модели, генерится через nswag без автогенерации моделей.
                  
                  
                  
                  
                  
                  Проблема: сейчас реквесты генерируются в сборке с апи сервисом. А значит в клиенте к ним нет доступа, но отдать на генерацию все модели nswag-у я не хочу, он часто туфту генерит.
                  
                  
                  
                  
                  
                  Появилась мысль:
                  
                  
                  Ввести сборку XZ.ApiService.Contracts, на которую будет ссылаться апи сервис и клиент. Вот в неё я хочу нагенерить те самые классы реквестов. Но нет прямого доступа к интерфейсам грейнов.
                  
                  
                  
                  
                  
                  И есть ограничение: апи клиент net standard, а все орлеановское .net 5, плюс, нахрена ссылаться апи клиенту на интерфейсы грейнов.
                  
                  
                  
                  
                  
                  Вопрос: как можно нагенерить код в сборку по интерфейсам из другой сборки без добавления ссылки на проект в XZ.ApiService.Contracts?
                  
                  
                
Можно добавить референс на либу с интерфейсами орлеанса через ReferenceOutputAssembly=false
Не прокатит. Апи клиент нет стандарт, а интерфейсы орлеана на net 5. Именно поэтому у нас есть апи прокси, потому что не все потребители могут резко съехать на .net 5 :) поэтому для них пилим рест.
Обсуждают сегодня