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.

Cómo agregar tsconfig a la biblioteca de clases de Razor en el paquete NuGet.

He creado una biblioteca de clase Razor y he añadido:

  • Typescript/tsconfig.json
  • Typescript/scripts.ts
  • PackageReference a Microsoft.TypeScript.MSBuild

Cuando referencio el proyecto en mi aplicación utilizando ProjectReference, funciona correctamente.

Cuando lo referencio utilizando PackageReference, obtengo un error de compilación extraño:

tsc : error TS18003: Build:No se encontraron entradas en el archivo de configuración ‘C:/Users/danie/.nuget/packages/mypackage/0.5.0/contentFiles/any/net6.0/Typescript/tsconfig.json’. Las rutas ‘include’ especificadas fueron ‘[\”*/\”]’ y las rutas ‘exclude’ fueron ‘[\”../wwwroot\”]’. [C:\Projects\app\App.csproj]

  1. ¿Cómo puedo incluir correctamente TypeScript en la biblioteca de clase Razor para poder crear un paquete de NuGet válido a partir de él?
  2. ¿Por qué el evento dotnet build app.csproj intenta compilar TypeScript que se encuentra en el paquete de NuGet?

Este es mi archivo MyPackage.csproj:

<project sdk="Microsoft.NET.Sdk.Razor">

<propertygroup>
    <targetframework>net6.0</targetframework>
    <generatepackageonbuild>True</generatepackageonbuild>
    <packageid>MyPackage</packageid>
    <embeduntrackedsources>true</embeduntrackedsources>
  </propertygroup>

<itemgroup>
    <supportedplatform include="browser"></supportedplatform>
  </itemgroup>

<itemgroup>
    <packagereference include="Microsoft.SourceLink.GitHub" version="1.0.0" privateassets="All"></packagereference>
    <packagereference include="Microsoft.AspNetCore.Components.Web" version="6.0.0"></packagereference>
    <packagereference include="Microsoft.TypeScript.MSBuild" version="4.5.3">
      <includeassets>runtime; build; native; contentfiles; analyzers; buildtransitive</includeassets>
      <privateassets>all</privateassets>
    </packagereference>
  </itemgroup>

<itemgroup>
    <folder include="wwwroot\"></folder>
  </itemgroup>
</project>
Tags:  , , , ,

Answer

  1. Avatar for davy.ai
    1. Para incluir correctamente typescript en la biblioteca de clases razor, debes seguir estos pasos:
    • Instala el paquete NuGet Microsoft.TypeScript.MSBuild.
    • Agrega un archivo tsconfig.json con la configuración necesaria para especificar los archivos de entrada, archivos de salida y opciones del compilador.
    • Agrega el tipo de elemento TypeScriptCompile al archivo del proyecto e incluye los archivos de TypeScript que deben ser compilados.

    Aquí tienes un ejemplo de cómo podría verse tu archivo de proyecto:

    <project sdk="Microsoft.NET.Sdk.Razor">
    
      <propertygroup>
        <targetframework>net6.0</targetframework>
        <packageid>MiPaquete</packageid>
      </propertygroup>
    
      <itemgroup>
        <packagereference include="Microsoft.TypeScript.MSBuild" version="4.5.3"></packagereference>
      </itemgroup>
    
      <itemgroup>
        <typescriptcompile include="Ruta\Al\Script.ts"></typescriptcompile>
        <content include="Ruta\Al\tsconfig.json"></content>
      </itemgroup>
    
    </project>
    
    1. El comando dotnet build está intentando compilar los archivos de TypeScript ubicados en el paquete NuGet porque se incluyen como archivos de contenido del paquete. Esto sucede porque dotnet build incluye todos los archivos de contenido en el proceso de compilación. Para evitar esto, puedes excluir los archivos de TypeScript de la compilación utilizando un elemento ExcludeAssets en tu referencia de paquete:
    <packagereference include="Microsoft.TypeScript.MSBuild" version="4.5.3">
      <excludeassets>contentfiles</excludeassets>
    </packagereference>
    

    Esto evitará que los archivos de TypeScript se incluyan en la compilación, al tiempo que permitirá que se incluyan en el paquete NuGet.

Comments are closed.