Microsoft.AspNetCore.App per ASP.NET Core

Nota

Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 8 di questo articolo.

Avviso

Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere Criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 8 di questo articolo.

Importante

Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.

Per la versione corrente, vedere la versione .NET 8 di questo articolo.

Il framework condiviso di ASP.NET Core (Microsoft.AspNetCore.App) contiene assembly sviluppati e supportati da Microsoft. Microsoft.AspNetCore.Appviene installato quando è installato .NET Core 3.0 o versione successiva. Il framework condiviso è il set di assembly (file .dll ) installati nel computer e include un componente di runtime e un pacchetto di destinazione. Per altre informazioni, vedere The shared framework (Il framework condiviso).

  • I progetti destinati all'SDK Microsoft.NET.Sdk.Web fanno riferimento in modo implicito al Microsoft.AspNetCore.App framework.

Per questi progetti non sono necessari riferimenti aggiuntivi:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>
    ...
</Project>

Framework condiviso ASP.NET Core:

  • Non include dipendenze di terze parti.
  • Include tutti i pacchetti supportati dal team ASP.NET Core.

Questa funzionalità richiede ASP.NET Core 2.x con destinazione .NET Core 2.x.

Metapacchetto Microsoft.AspNetCore.App per ASP.NET Core:

  • Non include le dipendenze di terze parti, ad eccezione di Json.NET, Remotion.Linq e IX-Async. Queste dipendenze di terze parti sono necessarie per garantire il funzionamento delle principali funzionalità dei framework.
  • Include tutti i pacchetti supportati dal team di ASP.NET Core ad eccezione di quelli che contengono dipendenze di terze parti (diverse da quelle indicate in precedenza).
  • Include tutti i pacchetti supportati dal team di Entity Framework Core ad eccezione di quelli che contengono dipendenze di terze parti (diverse da quelle indicate in precedenza).

Tutte le funzionalità di ASP.NET Core 2.x e Entity Framework Core 2.x sono incluse nel pacchetto Microsoft.AspNetCore.App. I modelli di progetto predefiniti destinati ASP.NET Core 2.x usano questo pacchetto. È consigliabile usare le Microsoft.AspNetCore.App applicazioni destinate ASP.NET Core 2.x ed Entity Framework Core 2.x.

Il numero di versione del metapacchetto Microsoft.AspNetCore.App rappresenta le versioni minime di ASP.NET Core e di Entity Framework Core.

L'uso del metapacchetto Microsoft.AspNetCore.App implica restrizioni di versione che proteggono l'app:

  • Se viene incluso un pacchetto che presenta una dipendenza transitiva (non diretta) in un pacchetto in Microsoft.AspNetCore.App e i numeri di versione sono diversi, NuGet genererà un errore.
  • Altri pacchetti aggiunti all'app non possono modificare la versione dei pacchetti inclusi in Microsoft.AspNetCore.App.
  • La coerenza della versione garantisce un'esperienza affidabile. Microsoft.AspNetCore.App è stato progettato per impedire le combinazioni di versioni non testate di bit correlati usati contemporaneamente nella stessa applicazione.

Le applicazioni che usano il metapacchetto Microsoft.AspNetCore.App sfruttano automaticamente il framework condiviso di ASP.NET Core. Quando si usa il Microsoft.AspNetCore.App metapacchetto, con l'applicazione non vengono distribuiti asset del ASP.NET Pacchetti NuGet core a cui si fa riferimento. Il framework condiviso ASP.NET Core contiene questi asset. Gli asset contenuti nel framework condiviso sono precompilati per migliorare i tempi di avvio dell'applicazione. Per altre informazioni, vedere The shared framework (Il framework condiviso).

Il file di progetto seguente fa riferimento al Microsoft.AspNetCore.App metapacchetto per ASP.NET Core e rappresenta un modello tipico di ASP.NET Core 2.2:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

</Project>

Il markup precedente rappresenta un modello tipico ASP.NET Core 2.x. Non specifica un numero di versione per il pacchetto di riferimento Microsoft.AspNetCore.App. Quando la versione non è specificata, una versione implicita viene specificata dall'SDK, vale a dire Microsoft.NET.Sdk.Web. È consigliabile basarsi sulla versione implicita specificata dall'SDK e non impostando in modo esplicito il numero di versione sul riferimento al pacchetto. In caso di domande su questo approccio, è possibile lasciare un commento GitHub nella pagina della discussione per la versione implicita Microsoft.AspNetCore.App.

La versione implicita è impostata su major.minor.0 per le app portabili. Il meccanismo di roll forward del framework condiviso eseguirà l'app sulla versione compatibile più recente tra i framework condivisi installati. Per garantire che venga usata la stessa versione in fase di sviluppo, test e produzione, verificare che in tutti gli ambienti sia installata la stessa versione del framework condiviso. Per le app autonome, il numero di versione implicita è impostato sul valore major.minor.patch del framework condiviso nel bundle nell'SDK installato.

Specificando un numero di versione nel riferimento Microsoft.AspNetCore.Appnon si garantisce che verrà scelta la versione del framework condiviso. Si supponga, ad esempio, che venga specificata la versione "2.2.1", ma "2.2.3" sia installata. In tal caso, l'app userà "2.2.3". Benché non sia consigliabile, è possibile disabilitare il roll forward (patch e/o versioni secondarie). Per altre informazioni su come eseguire il roll forward dell'host dotnet e configurarne il comportamento, vedere dotnet host rollforward (Roll forward dell'host dotnet).

<Project Sdk deve essere impostato su Microsoft.NET.Sdk.Web per usare la versione implicita Microsoft.AspNetCore.App. Quando si usa <Project Sdk="Microsoft.NET.Sdk"> (senza il carattere finale .Web):

  • Viene generato l'avviso seguente:

    Avviso NU1604: la dipendenza Microsoft.AspNetCore.App del progetto non contiene un limite inferiore inclusivo. Includere un limite inferiore nella versione della dipendenza per garantire risultati di ripristino coerenti.

  • Si tratta di un problema noto in .NET Core 2.1 SDK.

Aggiornare ASP.NET Core

Il Microsoft.AspNetCore.App metapacchetto non è un pacchetto tradizionale aggiornato da NuGet. Analogamente a Microsoft.NETCore.App, Microsoft.AspNetCore.App rappresenta un runtime condiviso, con una semantica di controllo delle versioni speciale gestita all'esterno di NuGet. Per altre informazioni, vedere Pacchetti, metapacchetti e framework.

Per aggiornare ASP.NET Core:

  • Nei computer di sviluppo e nei server di compilazione: scaricare e installare .NET Core SDK.
  • Nei server di distribuzione: scaricare e installare il runtime di .NET Core.

Le applicazioni eseguiranno il roll forward all'ultima versione installata al riavvio dell'applicazione. Non è necessario aggiornare il numero di versione di Microsoft.AspNetCore.App nel file di progetto. Per altre informazioni, vedere Roll forward delle app dipendenti dal framework.

Se l'applicazione usava in precedenza Microsoft.AspNetCore.All, vedere Migrazione da Microsoft.AspNetCore.All a Microsoft.AspNetCore.App.