Condividi tramite


Le API con nome sicuro generano PlatformNotSupportedException

Alcune API che non sono supportate in .NET/.NET Core, ma non hanno eseguito alcuna operazione quando è stato eseguito l'accesso, sono state ora modificate in modo da generare una PlatformNotSupportedException in fase di esecuzione. In precedenza l'uso di queste API comportava un'eccezione di runtime più avanti. L'eccezione viene ora generata quando viene creata un'istanza del tipo o si accede per la prima volta.

Comportamento precedente

Nelle versioni precedenti la chiamata a AssemblyName.KeyPair o StrongNameKeyPair(Byte[]) non un no-op. La chiamata StrongNameKeyPair(FileStream) consentiva di leggere il flusso, ma non eseguiva altre operazioni.

Nuovo comportamento

A partire da .NET 6, ognuna delle tre API interessate genera una PlatformNotSupportedException in fase di esecuzione.

Versione di introduzione

.NET 6

Tipo di modifica che causa un'interruzione

Questa modifica può influire sulla compatibilità binaria.

Motivo della modifica

In precedenza un'applicazione che chiamava l'API veniva compilata ed eseguita, ma non appena l'istanza veniva usata in qualsiasi percorso di codice, generava un'eccezione di runtime. Per rendere più esplicito il fatto che questo scenario non è supportato, la logica di generazione dell'eccezione è stata spostata nel costruttore di istanze. Nel caso in cui non vengano create istanze, l'eccezione viene generata anche nei punti di ingresso pubblici che restituiscono questo tipo, ovvero AssemblyName.KeyPair.

La firma con nome sicuro non è supportata in .NET/.NET Core e non esiste alcuna soluzione alternativa.

Nota

.NET Core/5+ non controlla mai le firme nel runtime. Se tuttavia si specificano come destinazioni le librerie multipiattaforma (ad esempio, un pacchetto di autenticazione di base destinato a .NET Standard 2.0, in modo da essere eseguito anche in .NET Framework), l'uso di nomi sicuri è una buona idea per la compatibilità tra runtime. .NET Framework continua ad applicare nomi sicuri se l'app chiamante è ha un nome sicuro. È possibile usare nomi sicuri per gli assembly in tutte le versioni di .NET tramite lo strumento Sn.exe. Per altre informazioni, vedere Firma con nomi sicuri.

API interessate

Vedi anche