Код клиента OData v4 без Visual Studio

Генератор клиентского кода OData v4 (https://marketplace.visualstudio.com/items?itemName=bingl.ODatav4ClientCodeGenerator) сгенерирует необходимый мне прокси-класс с помощью Visual Studio, но вместо этого мне нужно сгенерировать этот класс в моем коде C#.

Есть ли способ сгенерировать тот же прокси-класс на C# без использования Visual Studio?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
575
1

Ответы 1

Investigate how to execute T4 templates from C#
Running a T4 template using C#
Run T4 text template programmatically
Can I use T4 programmatically from C#?

Короткий ответ заключается в том, что исполняемый файл Text Templating Transformation и связанные с ним среды выполнения распространяются вместе с Visual Studio, поэтому, хотя ваш код C# может вручную выполнить процесс преобразования, без упаковки собственного анализатора и механизма преобразования он в значительной степени собирается только работать на ПК с установленной Visual Studio.

Can you not simply generate the Client Proxy into a dll on a PC that does have VS installed and use that dll in your applications where you do not have visual studio, such as within VS Code or other editors? You can generate the client proxy with the community edition of VS without too many issues if that is a factor.

Если вы управляете API, то самое простое решение - создать новый проект в рамках решения API, поместить туда клиент T4 и просто регенерировать клиента как часть процесса развертывания, тогда другие приложения могут напрямую использовать клиентскую dll.

Если вы не контролируете проект для API, свяжитесь с разработчиками, чтобы узнать, делают ли они это за вас!

Могут быть другие альтернативы, которые следует изучить вместо использования клиентской библиотеки или избежать необходимости повторной генерации во время выполнения. Если ваш код очень динамичен с точки зрения некоторых элементов схемы, подумайте о написании собственного универсального прокси, который принимает строковые параметры или анонимные объекты и / или выражения, и вручную преобразует их в конкретный синтаксис запроса OData для выполнения через WebClient. Способы достижения этого слишком сильно различаются, чтобы вдаваться в подробности о вашем конкретном сценарии.

Consider your requirement from a different point of view, the OData v4 client proxies try to replicate the entire API, if only some elements of the API are changing faster than you would like to re-distribute the regenerated proxies then you only need to find a non-client proxy solution for just the elements of the schema that you are experiencing problems with.

Вам не нужно использовать прокси-классы для связи с API OData v4, сценарий T4 предоставляется в качестве ускорителя решения, чтобы вы могли быстро кодировать с помощью API, вы не обязаны его использовать, но это полезно.

Также могут быть сторонние приложения или библиотеки DLL, которые вы можете упаковать в свое приложение, чтобы помочь вам достичь этого, однако выполнение классов прокси клиента T4 - это только половина работы, если вы сделаете это во время выполнения, вам также потребуется вручную скомпилировать эти сгенерированные классы, чтобы вы могли их выполнять.


Осознавая эту проблему, в наших приложениях, где мы создаем сервисный API, мы также генерируем клиентскую прокси-библиотеку dll и делаем ее доступной (через Nuget) нашим разработчикам или клиентам, которые могут захотеть взаимодействовать с API. Таким образом, каждый раз, когда служба публикуется, мы используем сценарии в нашем CI (через Azure DevOps) для восстановления и публикации DLL клиентского API при повторном развертывании службы.

Другие вопросы по теме