Изучите, как выполнять шаблоны T4 из C #
Запуск шаблона T4 с использованием C #
Программный шаблон текста T4
Можно ли использовать T4 программно из C #?
Короткий ответ заключается в том, что исполняемый файл Text Templating Transformation и связанные с ним среды выполнения распространяются вместе с Visual Studio, поэтому, хотя ваш код C # может выполнить процесс преобразования вручную, не упаковывая свой собственный анализатор и механизм преобразования, это в значительной степени работать только на ПК с установленной Visual Studio.
Не можете ли вы просто сгенерировать Client Proxy в dll на ПК, на котором установлена VS, и использовать эту dll в своих приложениях, где у вас нет Visual Studio, например, в VS Code или других редакторах? Вы можете сгенерировать клиентский прокси с версией сообщества VS без особых проблем, если это является фактором.
Если вы контролируете API, то самое простое решение - создать новый проект в рамках решения API, поместить туда клиента T4 и просто заново сгенерировать клиент в рамках процесса развертывания, тогда другие приложения могут использовать клиентские DLL непосредственно.
Если вы не управляете проектом для API, обратитесь к разработчикам, чтобы узнать, сделали ли они это для вас!
Могут существовать другие альтернативы для изучения вместо использования клиентской библиотеки или во избежание необходимости регенерации во время выполнения.
Если ваш код высокодинамичный с точки зрения некоторых элементов схемы, подумайте о написании собственного универсального прокси-сервера, который принимает строковые параметры или анонимные объекты и / или выражения, и вручную преобразовывает их в определенный синтаксис запроса OData для выполнения через WebClient. Способы достижения этой цели слишком сильно различаются, чтобы не вдаваться в подробности о вашем конкретном сценарии.
Рассматривайте ваши требования с другой точки зрения, клиентские прокси-серверы OData v4 пытаются реплицировать весь API, если только некоторые элементы API меняются быстрее, чем вы хотели бы перераспределить регенерированные прокси, вам нужно только найти решение для не-клиентского прокси только для тех элементов схемы, с которыми у вас возникли проблемы.
Вам не нужно использовать прокси-классы для взаимодействия с OData v4 API, скрипт T4 предоставляется в качестве ускорителя решения для быстрого кодирования API, вы не обязаны его использовать, но это полезно .
Там также могут быть сторонние приложения или библиотеки, которые вы можете упаковать в свое приложение, чтобы помочь вам достичь этого, однако выполнение клиентских прокси-классов T4 - это только половина работы, если вы делаете это во время выполнения, тогда вам также потребуется вручную скомпилировать эти сгенерированные классы, чтобы вы могли их выполнять.
Осознавая эту проблему, в наших приложениях, где мы создаем API службы, мы также генерируем клиентский прокси-сервер dll и делаем его доступным (через Nuget) для наших разработчиков или клиентов, которые могут захотеть взаимодействовать с API. Поэтому каждый раз, когда служба публикуется, мы используем сценарии в нашем CI (через DevOps Azure) для регенерации и публикации DLL API клиента при каждом повторном развертывании службы.