es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizando OpenApiReference, cómo configurar las opciones del generador de código mediante un archivo de opciones .nswag JSON (o cualquier alternativa).

Contexto

He agregado un servicio conectado a mi proyecto .NET 6 y estoy utilizando el generador de código NSwagCSharp para generar el cliente. (En mi proyecto anterior usé NSwagStudio)

Descubrí que en el archivo .csproj hay una posibilidad de añadir opciones:

<OpenApiReference Include="OpenAPIs\swagger.json" CodeGenerator="NSwagCSharp" ClassName="MiCliente">
  <SourceUri>https://localhost:xxxx/swagger/v1/swagger.json</SourceUri>
  <Options>/UseBaseUrl:false /GenerateClientInterfaces:true /InjectHttpClient:false, /DisposeHttpClient:false,
  </Options>
</OpenApiReference>

Parece que esas opciones son muy similares a lo que NSwagStudio guarda en su archivo .nswag. No estoy seguro, esto es solo una suposición, algunas de ellas parecen funcionar hasta ahora. (¿está documentado en algún lugar?)

Sin embargo, NSwagStudio también guarda los valores predeterminados (que no sé qué son), por lo que en un archivo .nswag típico hay aproximadamente 80 configuraciones en formato JSON:

"codeGenerators": {
 "openApiToCSharpClient": {
  ...
  "generateClientInterfaces": true,
  "clientBaseInterface": null,
  ... hasta más de 80 líneas ...

Pregunta

Esto resultaría en una línea muy larga en el elemento <Options> en el archivo .csproj. (Parece que no se permiten saltos de línea (?)). ¿Hay alguna forma de utilizar un archivo de opciones externo como el archivo .nswag para configurar las opciones de generación de código?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puede usar un archivo de opciones externo para configurar las opciones de generación de código en lugar de agregar todas las opciones en el elemento <options> del archivo .csproj.

    Para hacer esto, puede crear un archivo .json separado que contenga todas las opciones requeridas y hacer referencia a él en el archivo .csproj utilizando el atributoOptionsFile. Por ejemplo:

    <openapireference include="OpenAPIs\swagger.json" codegenerator="NSwagCSharp" classname="MyClient">
      <sourceuri>https://localhost:xxxx/swagger/v1/swagger.json</sourceuri>
      <optionsfile>options.json</optionsfile>
    </openapireference>
    

    En este ejemplo, el archivo options.json contiene todas las opciones requeridas para la generación de código. Puede crear este archivo manualmente o exportarlo desde NSwagStudio y modificarlo si es necesario.

    El contenido del archivo options.json debería verse así:

    {
      "generateClientInterfaces": true,
      "clientBaseInterface": null,
      ...
      "propertyNameGenerator": "CamelCase",
      "enumNameGenerator": "PascalCase"
    }
    

    Tenga en cuenta que solo las opciones que desea reemplazar deben incluirse en el archivo options.json. NSwagCSharp utilizará los valores predeterminados para todas las demás opciones que no están incluidas en el archivo.

    Al utilizar un archivo de opciones externo, puede administrar y modificar fácilmente las opciones de generación de código sin tener que modificar directamente el archivo .csproj.

Comments are closed.