Risolvere gli errori di destinazione di .NET Framework
Si applica a: Visual Studio
Questo argomento descrive gli errori di MSBuild che potrebbero verificarsi a causa di problemi di riferimento e come è possibile risolverli.
Fare riferimento a un progetto o a un assembly destinato a una versione diversa di .NET
È possibile creare applicazioni che fanno riferimento a progetti o assembly destinati a versioni diverse di .NET. Ad esempio, è possibile creare un'applicazione destinata a .NET 6 ma che fa riferimento a un assembly destinato a .NET Core 3.1. Tuttavia, non è possibile impostare un riferimento in un progetto destinato a una versione precedente di .NET a un progetto o a un assembly destinato a .NET 6. Di seguito è riportato un esempio dell'errore che potrebbe essere visualizzato in questo caso:
error NU1201: Project ClassLibrary-NET6 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project ClassLibrary-NET6 supports: net6.0 (.NETCoreApp,Version=v6.0)
2>Done building project "ClassLibrary-NET31.csproj" -- FAILED.
Per risolvere l'errore, assicurarsi che l'applicazione sia destinata a una versione .NET compatibile con la versione a cui fanno riferimento i progetti o gli assembly a cui fa riferimento l'applicazione.
Reindirizzare un progetto a una versione diversa di .NET
Se si modifica la versione di destinazione di .NET per l'applicazione, Visual Studio modifica alcuni riferimenti, ma potrebbe essere necessario aggiornare manualmente alcuni riferimenti. Ad esempio, uno degli errori indicati in precedenza potrebbe verificarsi se si modifica un'applicazione in .NET Core 3.1 di destinazione e tale applicazione ha riferimenti, risorse o impostazioni che si basano su .NET 6.
Aggiornare i riferimenti in app.config
Per aggirare le impostazioni delle applicazioni nelle applicazioni .NET Framework, seguire questa procedura:
- Aprire Esplora soluzioni.
- Selezionare Mostra tutti i file e quindi modificare il fileapp.config nell'editor XML di Visual Studio.
- Modificare la versione nelle impostazioni in modo che corrisponda alla versione appropriata di .NET. Ad esempio, è possibile modificare l'impostazione della versione da 4.0.0.0 a 2.0.0.0.
Analogamente, per un'applicazione che ha aggiunto risorse, seguire questa procedura:
- Aprire Esplora soluzioni.
- Selezionare Mostra tutti i file.
- Espandere Progetto personale (Visual Basic) o Proprietà (C#) e quindi modificare il file Resources.resx nell'editor XML di Visual Studio.
- Modificare l'impostazione della versione da 4.0.0.0 a 2.0.0.0.
Aggiornare le risorse
Se l'applicazione dispone di risorse come icone o bitmap o impostazioni come le stringhe di connessione dati, è anche possibile risolvere l'errore rimuovendo tutti gli elementi nella pagina Impostazioni del progetto Designer e quindi leggendo le impostazioni necessarie.
Un progetto viene ri-destinato a una versione diversa di .NET e i riferimenti non vengono risolti
Se si reindirizza un progetto a una versione diversa di .NET, i riferimenti potrebbero non essere risolti correttamente in alcuni casi. I riferimenti completi espliciti agli assembly spesso causano questo problema, ma è possibile risolverlo rimuovendo i riferimenti che non si risolvono e quindi aggiungendoli di nuovo al progetto. In alternativa, è possibile modificare il file di progetto per sostituire i riferimenti. Rimuovere prima di tutto i riferimenti del modulo seguente:
<Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
Quindi, sostituirli con il modulo semplice:
<Reference Include="System.ServiceModel" />
Nota
Dopo aver chiuso e riaperto il progetto, è necessario ricompilarlo anche per assicurarsi che tutti i riferimenti vengano risolti correttamente.