Metapacchetto Microsoft.AspNetCore.All per ASP.NET Core 2.0

Nota

Il Microsoft.AspNetCore.All metapacchetto non viene usato in ASP.NET Core 3.0 e versioni successive. Per altre informazioni, vedere questo problema in GitHub.

Nota

È consigliabile che le applicazioni destinate a ASP.NET Core 2.1 e versioni successive usino il metapacchetto Microsoft.AspNetCore.App invece di questo pacchetto. Vedere Migrazione da Microsoft.AspNetCore.All a Microsoft.AspNetCore.App in questo articolo.

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

Microsoft.AspNetCore.All è un metapacchetto che fa riferimento a un framework condiviso. Un framework condiviso è un set di assembly (file DLL) che non sono presenti nelle cartelle dell'app. Il framework condiviso deve essere installato nel computer per eseguire l'app. Per altre informazioni, vedere The shared framework (Il framework condiviso).

Il framework condiviso cui fa riferimento Microsoft.AspNetCore.All include:

  • Tutti i pacchetti supportati dal team ASP.NET Core.
  • Tutti i pacchetti supportati da Entity Framework Core.
  • Le dipendenze interne e di terze parti usate da ASP.NET Core e da Entity Framework Core.

Tutte le funzionalità di ASP.NET Core 2.x e Entity Framework Core 2.x sono incluse nel pacchetto Microsoft.AspNetCore.All. I modelli di progetto predefiniti destinati ad ASP.NET Core 2.0 usano questo pacchetto.

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

Il file seguente .csproj fa riferimento al Microsoft.AspNetCore.All metapacchetto per ASP.NET Core:

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

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.9" />
  </ItemGroup>

</Project>

Controllo delle versioni implicito

In ASP.NET Core 2.1 o versioni successive è possibile specificare il riferimento al pacchetto Microsoft.AspNetCore.All senza la versione. Quando la versione non è specificata, il SDK specifica una versione implicita (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, 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 esegue 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.

Il fatto di specificare un numero di versione nel riferimento del pacchetto Microsoft.AspNetCore.Allnon garantisce che verrà scelta la versione corrispondente del framework condiviso. Si supponga ad esempio che venga specificata la versione "2.1.1" ma che sia installata la versione "2.1.3". In tal caso, l'app userà "2.1.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).

Il SDK del progetto deve essere impostato su Microsoft.NET.Sdk.Web nel file di progetto perché venga usata la versione implicita di Microsoft.AspNetCore.All. Se è specificato il SDK Microsoft.NET.Sdk (<Project Sdk="Microsoft.NET.Sdk"> nella parte superiore del file di progetto), viene generato l'avviso seguente:

Avviso NU1604: la dipendenza Microsoft.AspNetCore.All 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 con .NET Core 2.1 SDK, che verrà risolto in .NET Core 2.2 SDK.

Migrazione da Microsoft.AspNetCore.All a Microsoft.AspNetCore.App

I pacchetti seguenti sono inclusi in Microsoft.AspNetCore.All ma non il pacchetto Microsoft.AspNetCore.App.

  • Microsoft.AspNetCore.ApplicationInsights.HostingStartup
  • Microsoft.AspNetCore.AzureAppServices.HostingStartup
  • Microsoft.AspNetCore.AzureAppServicesIntegration
  • Microsoft.AspNetCore.DataProtection.AzureKeyVault
  • Microsoft.AspNetCore.DataProtection.AzureStorage
  • Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv
  • Microsoft.AspNetCore.SignalR.Redis
  • Microsoft.Data.Sqlite
  • Microsoft.Data.Sqlite.Core
  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.Sqlite.Core
  • Microsoft.Extensions.Caching.Redis
  • Microsoft.Extensions.Configuration.AzureKeyVault
  • Microsoft.Extensions.Logging.AzureAppServices
  • Microsoft.VisualStudio.Web.BrowserLink

Per passare da Microsoft.AspNetCore.All a Microsoft.AspNetCore.App, se l'app usa qualsiasi API dai pacchetti sopra o pacchetti inseriti da tali pacchetti, aggiungere i riferimenti a tali pacchetti nel progetto.

Tutte le dipendenze dei pacchetti precedenti che non sono in altro modo dipendenze di Microsoft.AspNetCore.App non sono incluse in modo implicito. Ad esempio:

  • StackExchange.Redis come dipendenza di Microsoft.Extensions.Caching.Redis
  • Microsoft.ApplicationInsights come dipendenza di Microsoft.AspNetCore.ApplicationInsights.HostingStartup

Aggiornare ASP.NET Core 2.1

È consigliabile eseguire la migrazione al metapacchetto Microsoft.AspNetCore.App per la versione 2.1 e versioni successive. Per continuare a usare il metapacchetto Microsoft.AspNetCore.All e assicurarsi che venga distribuita la versione della patch più recente:

  • Nei computer di sviluppo e nei server di compilazione: installare il .NET Core SDK più recente.
  • Nei server di distribuzione: installare il runtime di .NET Core più recente. L'app eseguirà il roll forward all'ultima versione installata al riavvio dell'applicazione.