Aggiungere o rimuovere riferimenti tramite Gestione riferimenti

È possibile usare la finestra di dialogo Gestione riferimenti per aggiungere e gestire riferimenti a componenti sviluppati da sviluppatori, da Microsoft o da altre società. Se si sviluppa un’app Universal Windows, il progetto fa riferimento automaticamente a tutte le DLL SDK Windows corrette. Quando si crea un progetto .NET, il progetto fa automaticamente riferimento ai componenti necessari, ad esempio .NET SDK, ma è necessario aggiungere riferimenti quando si aggiungono funzionalità. Alcune API .NET vengono esposte nei componenti che è necessario aggiungere manualmente. I riferimenti ai componenti COM o ai componenti personalizzati devono essere aggiunti manualmente.

Finestra di dialogo Gestione riferimenti

Sul lato sinistro della finestra di dialogo Gestione riferimenti sono disponibili categorie diverse a seconda del tipo di progetto:

  • Assembly, con sottogruppi framework ed estensioni (solo .NET Framework)

  • Elenchi COM di tutti i componenti COM a cui è possibile fare riferimento

  • Progetti

  • Progetti condivisi

  • Windows con i sottogruppi Core ed Estensioni. È possibile esplorare i riferimenti in Windows SDK o negli SDK di estensione tramite il visualizzatore oggetti.

  • Sfoglia con il sottogruppo Recenti

    Nota

    È possibile che la finestra di dialogo Sfoglia non venga visualizzata nella finestra di dialogo Gestione riferimenti se si sviluppano progetti C++.

Aggiungere un riferimento

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo Riferimenti o dipendenze, quindi scegliere Aggiungi riferimento progetto, Aggiungi riferimento progetto condiviso o Aggiungi riferimento COM dal menu di scelta rapida. È possibile fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Aggiungi dal menu a comparsa per scegliere tra queste opzioni.

    Screenshot of the Add Reference dialog from the context menu in Solution Explorer.

    Verrà visualizzata la finestra della Gestione riferimenti che elenca i riferimenti disponibili in base al gruppo.

    Screenshot of the Reference Manager dialog box in Visual Studio.

  2. Selezionare un riferimento da aggiungere e quindi selezionare OK.

    Nota

    Se non viene visualizzato il riferimento che si sta cercando, selezionare Sfoglia per individuare il riferimento. Se si sviluppano progetti C++, è possibile che non venga visualizzata un'opzione di esplorazione.

Scheda Assembly (solo .NET Framework)

Nota

La scheda Assembly non è disponibile per i progetti destinati a .NET Core o .NET 5 e versioni successive, perché gli assembly per tali progetti vengono aggiunti come pacchetti NuGet o inclusi come destinazione di una versione specifica di .NET. Per visualizzare gli assembly a cui si fa riferimento in un progetto, espandere il nodo Dipendenze nel progetto ed esaminare in Framework. Dal nodo Dipendenze è possibile fare clic con il pulsante destro del mouse per aggiungere o rimuovere riferimenti al progetto oppure aprire il browser dei pacchetti NuGet per gestire i pacchetti NuGet. Vedere Installare e gestire i pacchetti in Visual Studio usando il Gestione pacchetti NuGet nella documentazione di NuGet.

Per i progetti .NET Framework, nella scheda Assembly sono elencati tutti gli assembly .NET disponibili per fare riferimento. Nella scheda Assembly non vengono elencati gli assembly della Global Assembly Cache (GAC) in quanto questi assembly fanno parte dell'ambiente di runtime. Se si distribuisce o si copia un'applicazione che contiene un riferimento a un assembly registrato nella GAC, l'assembly non viene distribuito o copiato con l'applicazione, indipendentemente dall'impostazione Copia locale . Per altre informazioni, vedere Gestire i riferimenti in un progetto.

Quando si aggiunge manualmente un riferimento a qualsiasi spazio dei nomi EnvDTE (EnvDTE, EnvDTE80, EnvDTE90, EnvDTE90a o EnvDTE100), impostare la proprietà Incorpora tipi di interoperabilità del riferimento su False nella finestra Proprietà. L'impostazione di questa proprietà su True può causare problemi di compilazione dovuti ad alcune proprietà EnvDTE che non possono essere incorporate.

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

La scheda Assembly è costituita da due sottoschede:

  1. In Framework sono elencati tutti gli assembly che costituiscono il framework di destinazione.

    Per i progetti che non usano .NET Core o la piattaforma UWP (Universal Windows Platform) come destinazione, la scheda Framework enumera gli assembly del framework di destinazione. L'utente dovrà aggiungere i riferimenti necessari all'applicazione.

    Per impostazione predefinita, i progetti di Windows universale contengono riferimenti a tutti gli assembly nel framework di destinazione. Nei progetti gestiti, un nodo di sola lettura nella cartella Riferimenti di Esplora soluzioni indica il riferimento all'intero framework. Di conseguenza, la scheda Framework non enumera alcun assembly dal framework e visualizza invece il messaggio seguente: "Tutti gli assembly framework sono già a cui si fa riferimento. Utilizzare Visualizzatore oggetti per esplorare i riferimenti nel framework".

  2. In Estensioni sono elencati tutti gli assembly che i fornitori esterni di componenti e di controlli hanno sviluppato per estendere il framework di destinazione. A seconda dello scopo dell'applicazione utente, potrebbero essere necessari questi assembly.

    Estensioni viene popolata enumerando gli assembly che sono registrati nei seguenti percorsi:

    Computer a 32 bit:

    • HKEY_CURRENT_USER\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]

    Computer a 64 bit:

    • HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]

    E versioni precedenti di [identificatore framework di destinazione]

    Ad esempio, se un progetto è destinato a .NET Framework 4 in un computer a 32 bit, le estensioni enumera gli assembly registrati in \Microsoft.NETFramework\v4.0\AssemblyFoldersEx, \Microsoft.NETFramework\v3.5\AssemblyFoldersEx, \Microsoft.NETFramework\v3.0\AssemblyFoldersEx e \Microsoft.NETFramework\v2.0\AssemblyFoldersEx.

Alcuni componenti nell'elenco potrebbero non essere visualizzati, a seconda della versione del framework del progetto. Questa situazione può verificarsi nelle condizioni seguenti:

  • Un componente che usa una versione recente del framework non è compatibile con un progetto destinato a una versione precedente.

    Per informazioni sulla modifica della versione del framework di destinazione per un progetto, vedere Panoramica sull'impostazione dei framework di destinazione.

  • Un componente che usa una versione precedente di .NET Framework non è compatibile con un progetto destinato a .NET Framework più recente.

Per altre informazioni sulla compatibilità delle versioni tra le versioni di .NET Framework, vedere Compatibilità delle versioni.

È consigliabile evitare di aggiungere riferimenti di file agli output di un altro progetto nella stessa soluzione, perché ciò potrebbe causare errori di compilazione. Usare invece la scheda Progetti della finestra di dialogo Aggiungi riferimento per creare riferimenti da progetto a progetto. Questa procedura semplifica lo sviluppo del team consentendo una migliore gestione delle librerie di classi create nei progetti. Per altre informazioni, vedere Risolvere i problemi relativi ai riferimenti interrotti.

Nota

Viene creato un riferimento al file anziché un riferimento al progetto se la versione del framework di destinazione di un progetto è .NET Framework 4.5 o versione successiva e la versione di destinazione dell'altro progetto è .NET Framework 2, 3, 3.5 o 4.0. Per altre informazioni su .NET, .NET Framework e .NET Core, vedere Che cos'è .NET (e .NET Core).

Per visualizzare un assembly nella finestra di dialogo Aggiungi riferimento

  • Spostare o copiare l'assembly in una o più delle seguenti posizioni:

    • 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.

    - oppure -

  • Impostare una chiave del Registro di sistema che specifica il percorso degli assembly da visualizzare:

    Per un sistema operativo a 32 bit, aggiungere una delle seguenti chiavi del Registro di sistema.

    • [HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    Per un sistema operativo a 64 bit, aggiungere una delle seguenti chiavi del Registro di sistema in un hive del Registro di sistema a 32 bit.

    • [HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    <VersionMinimum> corrisponde alla versione minima applicabile del framework. Se il valore di <VersionMinimum> è v3.0, le cartelle specificate in AssemblyFoldersEx si applicano ai progetti destinati a .NET Framework 3.0 e versioni successive.

    <AssemblyLocation> è la directory degli assembly che si vuole visualizzare nella finestra di dialogo Aggiungi riferimento, ad esempio C:\AssiemiPersonali.

    Se la chiave del Registro di sistema viene creata nel nodo HKEY_LOCAL_MACHINE, tutti gli utenti possono visualizzare gli assembly nel percorso specificato nella finestra di dialogo Aggiungi riferimento. Se la chiave del Registro di sistema viene creata nel nodo HKEY_CURRENT_USER, ha effetto solo sull'impostazione dell'utente corrente.

    Aprire di nuovo la finestra di dialogo Aggiungi riferimento. Gli assembly dovrebbero essere visualizzati nella scheda .NET. In caso contrario, assicurarsi che gli assembly si trovino nella directory AssemblyLocation specificata, riavviare Visual Studio e riprovare.

Scheda Progetti

Nella scheda Progetti sono elencati tutti i progetti compatibili all'interno della soluzione corrente, nella sottoscheda Soluzione .

Un progetto può fare riferimento a un altro progetto destinato a una versione del framework diversa. Ad esempio, è possibile creare un progetto destinato a .NET 8.0, ma che fa riferimento a un assembly compilato per .NET 6.0. Tuttavia, il progetto .NET 6.0 non può fare riferimento a un progetto .NET Framework 8.0. Per altre informazioni, vedere Panoramica sull'impostazione dei framework di destinazione.

Scheda Progetti condivisi

Aggiungere un riferimento a un progetto condiviso nella scheda Progetti condivisi della finestra di dialogo Gestione riferimenti. I progetti condivisi consentono di scrivere codice comune a cui fanno riferimento molti progetti di applicazione diversi.

Scheda Windows universale

La scheda Windows universale contiene tutti gli SDK specifici per le piattaforme in cui vengono eseguiti i sistemi operativi Windows. Questa scheda include due sottogruppi: Core ed Extensions.

Sottogruppo di base

I progetti di app di Windows universale hanno un riferimento all'SDK di Windows universale per impostazione predefinita. Di conseguenza, nel sottogruppo Base in Gestione riferimenti non viene enumerato nessun assembly dell'SDK di Windows universale.

Sottogruppo Estensioni

In Estensioni sono elencati gli SDK che estendono la piattaforma Windows di destinazione.

Un SDK è una raccolta di file che in Visual Studio vengono trattati come un singolo componente. Nella scheda Estensioni gli SDK che si applicano al progetto da cui è stata aperta la finestra di dialogo Gestione riferimenti sono elencati come voci singole. Una volta aggiunto a un progetto, tutto il contenuto dell'SDK viene utilizzato da Visual Studio in modo tale che l'utente non deve eseguire nuove azioni per sfruttare il contenuto dell'SDK in IntelliSense, nella casella degli strumenti, nelle finestre di progettazione, nel Visualizzatore oggetti, nella compilazione, nella distribuzione, nel debug e nella creazione del pacchetto.

Per informazioni su come visualizzare l'SDK nella scheda Estensioni , vedere Creare un Software Development Kit.

Nota

Se un progetto fa riferimento a un SDK che dipende da un altro SDK, Visual Studio non usa il secondo SDK a meno che non si aggiunga manualmente un riferimento al secondo SDK. Quando si sceglie un SDK nella scheda Estensioni, la finestra di dialogo Gestione riferimenti consente di identificare le dipendenze dell'SDK elencando eventuali dipendenze nel riquadro dei dettagli.

Se un tipo di progetto non supporta le estensioni, la scheda non viene visualizzata nella finestra di dialogo Gestione riferimenti.

Scheda COM

Nella scheda COM sono elencati tutti i componenti COM a cui è possibile fare riferimento. Se si desidera aggiungere un riferimento a una DLL COM registrata che contiene un manifesto interno, annullare prima di tutto la registrazione della DLL. In caso contrario, Visual Studio aggiunge il riferimento all'assembly come controllo ActiveX e non come DLL nativa.

Se un tipo di progetto non supporta il modello COM, la scheda non viene visualizzata nella finestra di dialogo Gestione riferimenti.

Esplora

È possibile usare il pulsante Sfoglia per passare a un componente nel file system.

Un progetto può fare riferimento a un componente destinato a una versione del framework diversa. Ad esempio, è possibile creare un'applicazione destinata a .NET Framework 4.7.2, ma fa riferimento a un componente destinato a .NET Framework 4. Per altre informazioni, vedere Panoramica sull'impostazione dei framework di destinazione.

Evitare di aggiungere riferimenti ai file agli output di un altro progetto nella stessa soluzione, perché questa tattica potrebbe causare errori di compilazione. Usare invece la scheda Soluzione della finestra di dialogo Gestione riferimenti per creare riferimenti da progetto a progetto. Si facilita così lo sviluppo in team, consentendo una migliore gestione delle librerie di classi create nei progetti. Per altre informazioni, vedere Risolvere i problemi relativi ai riferimenti interrotti.

Non è possibile individuare un SDK e aggiungerlo al progetto. È possibile solo individuare un file, ad esempio un assembly o un file con estensione winmd, e aggiungerlo al progetto.

Quando si esegue un riferimento a un file WinMD, il layout previsto è che i <file FileName.winmd>,< FileName.dll> e <FileName.pri> vengono tutti posizionati uno accanto all'altro. Se si fa riferimento a un WinMD negli scenari seguenti, un set incompleto di file viene copiato nella directory di output del progetto e, di conseguenza, si verificano errori di compilazione e runtime.

  • Componente nativo: un progetto nativo crea un winMD per ogni set di spazi dei nomi non contiguo e una DLL costituita dall'implementazione. I nomi winMD sono diversi. Quando si fa riferimento a questo file di componente nativo, MSBuild non riconosce che i WinMD denominati diversamente fanno un componente. Pertanto, vengono copiati solo gli errori di runtime denominati in modo identico FileName.dll> e <FileName.winmd>.< Per risolvere questo problema, creare un SDK di estensione. Per altre informazioni, vedere Procedura: Creare un Software Development Kit.

  • Utilizzo dei controlli: almeno, un controllo XAML è costituito da un <fileName.winmd>, <FileName.dll>, <FileName.pri>, <XamlName.xaml> e imageName.jpg><. Quando il progetto viene compilato, i file di risorse associati al riferimento al file non vengono copiati nella directory di output del progetto e vengono copiati solo FileName.winmd>,< FileName.dll> e <FileName.pri>.< Viene registrato un errore di compilazione che indica che mancano le risorse XamlName.xaml> e <ImageName.jpg>.< Per avere esito positivo, copiare manualmente questi file di risorse nella directory di output del progetto per la compilazione e il debug/runtime. Per risolvere questo problema, creare un SDK di estensione seguendo i passaggi in Procedura: Creare un Software Development Kit o modificare il file di progetto per aggiungere la proprietà seguente:

    <PropertyGroup>
       <GenerateLibraryOutput>True</GenerateLibraryOutput>
    </PropertyGroup>
    

    Nota

    Se si aggiunge la proprietà, la compilazione potrebbe essere eseguita più lentamente.

Recenti

Le schede Assembly, COM, Windows e Sfoglia supportano tutte una scheda Recenti, nella quale viene enumerato l'elenco di componenti aggiunti ai progetti di recente.

La barra di ricerca della finestra di dialogo Gestione riferimenti viene abilitata nella scheda attiva. Ad esempio, se si digita "System" nella barra di ricerca mentre la scheda Soluzione è attiva, la ricerca non restituisce alcun risultato a meno che la soluzione non sia costituita da un nome di progetto che contiene "System".

Rimuovere un riferimento

È possibile rimuovere i riferimenti inutilizzati per i progetti di stile SDK in Visual Studio usando la voce di menu Rimuovi riferimento inutilizzato.

Screenshot of the Remove Unused Reference dialog from the context menu in Solution Explorer.

Per altre informazioni, vedere Rimuovere i riferimenti inutilizzati.