Condividi tramite


Aggiungere o rimuovere riferimenti tramite Gestione riferimenti

È possibile usare la finestra di dialogo Gestione riferimenti per aggiungere e gestire riferimenti ai componenti sviluppati dall'utente, Da Microsoft o da un'altra società. Se stai sviluppando un'app di Windows universale, il progetto fa automaticamente riferimento a tutte le DLL di Windows SDK 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.

Se è disponibile un pacchetto NuGet per la libreria a cui si fa riferimento, usare Gestione pacchetti NuGet. Vedere Installare e usare un pacchetto NuGet.

Finestra di dialogo Gestione riferimenti

La finestra di dialogo Gestione riferimenti mostra diverse categorie sul lato sinistro, a seconda del tipo di progetto:

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

  • COM elenca tutti i componenti COM disponibili per fare riferimento

  • Progetti

  • Progetti condivisi

  • Windows, con sottogruppi core ed estensioni . È possibile esplorare i riferimenti negli SDK di Windows o SDK di estensione utilizzando il Visualizzatore oggetti.

  • Sfoglia con sottogruppo Recente

    Annotazioni

    È 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 della finestra di dialogo Aggiungi riferimento dal menu di scelta rapida in Esplora soluzioni.

    Gestione riferimenti apre ed elenca i riferimenti disponibili per gruppo.

    Screenshot della finestra di dialogo Gestione riferimenti in Visual Studio.

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

    Annotazioni

    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)

Annotazioni

La scheda Assembly non è disponibile per i progetti destinati a .NET Core o .NET 5 e versioni successive. Selezionare Sfoglia per trovare un assembly nel file system e aggiungerlo come riferimento. Per visualizzare gli assembly a cui si fa riferimento in un progetto, espandere il nodo Dipendenze nel progetto. Dal nodo Dipendenze è possibile fare clic con il pulsante destro del mouse per aggiungere o rimuovere riferimenti al progetto, visualizzare o rimuovere assembly nel nodo Assembly oppure aprire il browser dei pacchetti NuGet per gestire i pacchetti NuGet. Vedere Installare e gestire pacchetti in Visual Studio usando 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. La scheda Assembly non elenca gli assembly della Global Assembly Cache (GAC) perché gli assembly nella GAC 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 uno qualunque degli spazi dei nomi EnvDTE (EnvDTE, EnvDTE80, EnvDTE90, EnvDTE90a, o EnvDTE100), imposta 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 a causa di determinate 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 viene rimosso dall'elenco di riferimenti.

La scheda Assembly è costituita da due sottoschede:

  1. Framework elenca tutti gli assembly che costituiscono il framework di destinazione.

    Per i progetti che non hanno come destinazione .NET Core o la piattaforma UWP (Universal Windows Platform), la scheda Framework enumera gli assembly dal framework di destinazione. L'utente deve aggiungere tutti i riferimenti richiesti dall'applicazione.

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

  2. Le estensioni elencano tutti gli assembly sviluppati dai fornitori esterni di componenti e controlli per estendere il framework di destinazione. A seconda dello scopo dell'applicazione utente, potrebbero essere necessari questi assembly.

    Le estensioni vengono popolate enumerando gli assembly registrati nei percorsi seguenti:

    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]

    Macchina 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 del [Identificatore del 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 su come modificare la versione del framework di destinazione per un progetto, vedere Panoramica della destinazione del framework.

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

Annotazioni

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'assemblaggio in uno dei percorsi seguenti:

    • Directory del progetto corrente. È possibile trovare questi assembly usando la scheda Sfoglia.

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

    - o -

  • 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 chiavi del Registro di sistema seguenti.

    • [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 di registro in un hive di registro 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> è la versione del framework più bassa applicabile. Se <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 da visualizzare nella finestra di dialogo Aggiungi riferimento , ad esempio C:\MyAssemblies.

    Creare la chiave del Registro di sistema sotto il nodo HKEY_LOCAL_MACHINE consente a tutti gli utenti di visualizzare gli assembly nella posizione specificata nella finestra di dialogo Aggiungi riferimento. La creazione della chiave del Registro di sistema nel nodo HKEY_CURRENT_USER influisce solo sull'impostazione per l'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.

Progetti Scheda

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 diversa del framework. 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 ulteriori informazioni, vedere la panoramica del targeting del framework .

Tab 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

Nella scheda Windows universale sono elencati tutti gli SDK specifici delle piattaforme in cui vengono eseguiti i sistemi operativi Windows. Questa scheda include due sottogruppi: Core ed Extensions.

Sottogruppo principale

Per impostazione predefinita, i progetti di app di Windows universali hanno un riferimento a Universal Windows SDK. Di conseguenza, il sottogruppo Core in Gestione riferimenti non enumera alcun assembly da Universal Windows SDK.

Sottogruppo di estensioni

Le estensioni elencano gli SDK utente che estendono la piattaforma Windows di destinazione.

Un SDK è una raccolta di file che Visual Studio considera come un singolo componente. Nella scheda Estensioni gli SDK che si applicano al progetto da cui è stata richiamata la finestra di dialogo Gestione riferimenti vengono elencati come singole voci. Quando viene aggiunto a un progetto, tutto il contenuto dell'SDK viene utilizzato da Visual Studio in modo che l'utente non debba eseguire altre azioni per sfruttare il contenuto dell'SDK in IntelliSense, casella degli strumenti, finestre di progettazione, Visualizzatore oggetti, compilazione, distribuzione, debug e creazione di pacchetti.

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

Annotazioni

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, questa scheda non viene visualizzata nella finestra di dialogo Gestione riferimenti.

Scheda COM

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

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

Esplora

È possibile usare il pulsante Sfoglia per cercare un componente o un assembly 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 ulteriori informazioni, vedere la panoramica del targeting del framework .

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. In questo modo lo sviluppo del team risulta più semplice consentendo una migliore gestione delle librerie di classi create nei progetti. Per altre informazioni, vedere Risolvere i problemi relativi ai riferimenti interrotti.

Non è possibile passare a un SDK e aggiungerlo al progetto. Puoi passare a un file (ad esempio, un assembly o .winmd) e aggiungerlo al tuo progetto.

Quando si esegue un riferimento a un file WinMD, il layout previsto è che i <file FileName.winmd>, <FileName>.dlle <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 file WinMD per ogni set di spazi dei nomi disgiunto e una DLL che consiste nell'implementazione. I WinMDs hanno nomi disparati. Quando si fa riferimento a questo file di componente nativo, MSBuild non riconosce che i WinMD denominati diversamente fanno un componente. Di conseguenza, vengono copiati solo i file identicamente denominati <FileName>.dll e <FileName.winmd>, e si verificano errori di esecuzione. Per risolvere questo problema, creare un SDK di estensione. Per altre informazioni, vedere Creare un Software Development Kit.

  • Utilizzo dei controlli: almeno un controllo XAML è costituito da un <FileName.winmd>, <FileName>.dll, <FileName.pri>, <XamlName.xaml> e un <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 le risorse <XamlName.xaml> e <ImageName>.jpg sono mancanti. 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 la procedura descritta in Creare un Software Development Kit o modificare il file di progetto per aggiungere la proprietà seguente:

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

    Annotazioni

    Se aggiungi la proprietà, la compilazione potrebbe diventare più lenta.

Recente

Gli assembly, COM, Windows e Sfoglia supportano ognuna una scheda 'Recenti', che enumera l'elenco dei componenti aggiunti di recente ai progetti.

La barra di ricerca nella finestra di dialogo Gestione riferimenti viene eseguita sulla scheda che si trova nello stato attivo. 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 della finestra di dialogo

Per altre informazioni, vedere Rimuovere i riferimenti inutilizzati.