Gestire i riferimenti in un progetto

Prima di scrivere codice per un componente esterno o servizio connesso, il progetto deve contenere innanzitutto un riferimento a esso. Un riferimento è essenzialmente una voce in un file di progetto che contiene le informazioni necessarie a Visual Studio per individuare il componente o il servizio.

La modalità di aggiunta di un riferimento dipende dal tipo di progetto per il codice su cui si sta lavorando:

È possibile aggiungere un riferimento ai seguenti tipi di componenti e servizi:

  • Librerie di classi o assembly .NET

  • App UWP

  • componenti COM

  • Altri assembly o librerie di classi dei progetti contenuti nella stessa soluzione

  • Progetti condivisi

  • servizi Web XML

Riferimenti ad app UWP

La piattaforma UWP (Universal Windows Platform) (UWP) fornisce una piattaforma di app comune per ogni dispositivo che esegue Windows. Per informazioni su come creare un'app UWP, vedi Esercitazione: Creare la prima applicazione piattaforma UWP (Universal Windows Platform) in Visual Studio con XAML e C#.

Riferimenti al progetto

piattaforma UWP (Universal Windows Platform) progetti (UWP) possono creare riferimenti ad altri progetti UWP nella soluzione o a progetti o file binari di Windows 8.1, purché questi progetti non usino API deprecate in Windows 10 e versioni successive. Per altre informazioni vedere la pagina relativa al passaggio da Windows Runtime 8 alla piattaforma UWP.

Se si sceglie di ridefinire i progetti di Windows 8.1 in Windows 10 e versioni successive, vedere Convertire, eseguire la migrazione e aggiornare i progetti di Visual Studio.

Suggerimento

Per informazioni su come creare e compilare una nuova app UWP per Windows 10 e Windows 11, vedi Scegliere una versione UWP.

Riferimenti all'SDK di estensione

Le app di Visual Basic, C#, C++ e JavaScript piattaforma UWP (Universal Windows Platform) (UWP) possono fare riferimento agli SDK di estensione destinati a Windows 8.1, purché questi SDK di estensione non usino API deprecate in Windows 10 e versioni successive. Controllare il sito del fornitore di Extension SDK per scoprire se è possibile farvi riferimento dalle app UWP.

Se si determina che l'SDK di estensione a cui fa riferimento l'app non è supportato, è necessario eseguire la procedura seguente:

  1. Controllare il nome del progetto che causa l'errore. La piattaforma di destinazione del progetto viene annotata tra parentesi accanto al nome del progetto. Ad esempio, NomeProgettoPersonale (Windows 8.1) significa che il progetto NomeProgettoPersonale è destinato alla versione della piattaforma Windows 8.1.

  2. Andare al sito del fornitore proprietario dell'SDK di estensione non supportato e installare la versione dell'SDK di estensione con dipendenze compatibili con la versione della piattaforma di destinazione del progetto.

    Nota

    Un modo per sapere se un SDK di estensione ha dipendenze da altri SDK di estensione è verificare in Gestione riferimenti. Riavviare Visual Studio, creare un nuovo progetto di app UWP C#, quindi fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi riferimento. Passare alla scheda Windows, quindi alla sottoscheda Estensioni e selezionare l'SDK di estensione. Esaminare il riquadro destro di Gestione riferimenti. Se dispone di dipendenze, risulteranno elencate.

    Importante

    Se il progetto è destinato specificamente a Windows 10 e l'SDK dell'estensione installato nel passaggio precedente ha una dipendenza dal pacchetto di runtime di Microsoft Visual C++, la versione del pacchetto di runtime di Microsoft Visual C++ compatibile con Windows 10 è v14.0 e viene installata con Visual Studio.

  3. Se l'SDK dell'estensione installato nel passaggio precedente presenta dipendenze da altri SDK di estensione, passare ai siti dei fornitori che possiedono le dipendenze e quindi installare le versioni di queste dipendenze compatibili con la versione della piattaforma di destinazione del progetto.

  4. Riavviare Visual Studio e aprire l'app.

  5. Fare clic con il pulsante destro del mouse sul nodo Riferimenti o dipendenze nel progetto che ha causato l'errore e quindi scegliere Aggiungi riferimento.

  6. Selezionare la scheda Windows e quindi la sottoscheda Estensioni , deselezionare le caselle di controllo per gli SDK di estensione precedenti e quindi selezionare le caselle di controllo per i nuovi SDK di estensione. Seleziona OK.

Aggiunta di un riferimento in fase di progettazione

Quando si fa riferimento a un assembly nel progetto, Visual Studio cerca l'assembly nei percorsi seguenti:

  • La directory del progetto corrente. È possibile trovare questi assembly tramite la scheda Sfoglia .

  • Altre directory di progetto nella stessa soluzione. È possibile trovare questi assembly tramite la scheda Progetti .

Nota

  • Tutti i progetti contengono un riferimento implicito a mscorlib.
  • Tutti i progetti contengono un riferimento implicito a System.Core, anche se System.Core è stato rimosso dall'elenco di riferimenti.
  • I progetti di Visual Basic contengono un riferimento implicito a Microsoft.VisualBasic.

Riferimenti a componenti condivisi in fase di esecuzione

In fase di esecuzione i componenti devono trovarsi nel percorso di output del progetto o nella Global Assembly Cache (GAC). Se il progetto contiene un riferimento a un oggetto che non si trova in una di queste posizioni, è necessario copiare il riferimento al percorso di output del progetto quando si compila il progetto. La CopyLocal proprietà indica se la copia deve essere eseguita. Se il valore è True, il riferimento viene copiato nella directory del progetto quando si compila quest'ultimo. Se il valore è False, il riferimento non viene copiato.

Se si distribuisce un'applicazione che contiene un riferimento a un componente personalizzato registrato nella GAC, il componente non verrà distribuito con l'applicazione, indipendentemente dall'impostazione CopyLocal . Nelle versioni precedenti di Visual Studio era possibile impostare la proprietà CopyLocal su un riferimento per garantire che l'assembly venisse distribuito. A questo punto, è necessario aggiungere manualmente l'assembly nella cartella \Bin. Questa azione mette tutto il codice personalizzato sotto controllo, riducendo così il rischio di pubblicare codice personalizzato con cui non si ha familiarità.

Per impostazione predefinita, la proprietà CopyLocal è impostata su False se l'assembly o il componente si trova nella Global Assembly Cache o un componente del framework. In caso contrario, il valore è impostato su True. I riferimenti da progetto a progetto sono sempre impostati su True.

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 una versione diversa di .NET. Ad esempio, è possibile creare un'applicazione destinata a .NET Framework 4.6 che fa riferimento a un assembly destinato a .NET Framework 4.5. Se si crea un progetto destinato a una versione precedente di .NET, non è possibile impostare un riferimento in tale progetto su un progetto o un assembly destinato a una versione più recente.

Per altre informazioni, vedere Panoramica sull'impostazione dei framework di destinazione.

Riferimenti da progetto a progetto

I riferimenti da progetto a progetto sono riferimenti a progetti che contengono assembly; è possibile aggiungere riferimenti a progetti tramite la scheda Progetto della finestra di dialogo Gestione riferimenti. Visual Studio può trovare un assembly se viene specificato un percorso al progetto.

Quando si dispone di un progetto che produce un assembly, è necessario fare riferimento al progetto e non usare un riferimento al file. Il vantaggio di un riferimento da progetto è che viene creata una dipendenza tra i progetti nel sistema di compilazione. Il progetto dipendente viene compilato se è stato modificato dopo l'ultima compilazione del progetto di riferimento. Un riferimento al file non crea una dipendenza di compilazione, quindi è possibile compilare il progetto di riferimento senza compilare il progetto dipendente e il riferimento può diventare obsoleto. Ovvero, il progetto può fare riferimento a una versione compilata in precedenza del progetto. Ciò può comportare la necessità di più versioni di una singola DLL nella directory bin , che non è possibile. Quando si verifica questo conflitto, viene visualizzato un messaggio, ad esempio "Avviso: la dipendenza 'file' nel progetto 'project' non può essere copiata nella directory di esecuzione perché sovrascrive il riferimento 'file'". Per altre informazioni, vedere Risolvere i problemi relativi ai riferimenti interrotti e Procedura: Creare e rimuovere le dipendenze del progetto.

Nota

Se la versione di destinazione di .NET Framework di un progetto è 4.5 e la versione di destinazione dell'altro progetto è 2, 3, 3.5 o 4.0, viene creato un riferimento al file anziché un riferimento da progetto a progetto.

Riferimento a progetti condivisi

A differenza della maggior parte degli altri tipi di progetto, un progetto condiviso non ha alcun output binario. Al contrario, il codice viene compilato in ogni progetto che vi fa riferimento. I progetti condivisi consentono di scrivere codice comune a cui fanno riferimento molti progetti di applicazione diversi. Il codice viene compilato come parte di ogni progetto di riferimento e può includere direttive del compilatore per incorporare funzionalità specifiche della piattaforma nella codebase condivisa. Aggiungere un riferimento a un progetto condiviso nella scheda Progetti condivisi della finestra di dialogo Gestione riferimenti.

Riferimenti a file

I riferimenti a file sono riferimenti diretti ad assembly esterni al contesto di un progetto di Visual Studio. È possibile crearli usando la scheda Sfoglia della finestra di dialogo Gestione riferimenti. Usare un riferimento a file quando si ha solo un assembly o un componente e non il progetto che lo crea come output.