Adicionar ou remover referências usando o Gerenciador de Referências

É possível usar a caixa de diálogo Gerenciador de Referências para adicionar e gerenciar referências aos componentes que você, a Microsoft ou outra empresa desenvolveram. Se você estiver desenvolvendo um aplicativo Universal do Windows, o projeto referenciará automaticamente todas as DLLs corretas do SDK do Windows. Quando você cria um projeto .NET, seu projeto faz referência automaticamente aos componentes necessários, como o SDK do .NET, mas você precisa adicionar referências à medida que adiciona funcionalidade. Algumas APIs do .NET são expostas em componentes que precisam ser adicionados manualmente. As referências a componentes COM ou a componentes personalizados devem ser adicionadas manualmente.

Caixa de diálogo Gerenciador de Referências

A caixa de diálogo Gerenciador de Referências mostra diferentes categorias à esquerda, dependendo do tipo de projeto:

  • Assemblies, com os subgrupos deEstrutura e Extensões (somente .NET Framework)

  • COM lista todos os componentes COM disponíveis para referência

  • Projetos

  • Projetos compartilhados

  • Windows, com subgrupos Core e Extensões. É possível explorar as referências no SDK do Windows ou nos SDKs de extensão usando o Pesquisador de Objetos.

  • Procurar, com o subgrupo Recente

    Observação

    Talvez você não veja Procurar na caixa de diálogo Gerenciador de Referência se estiver desenvolvendo projetos C++.

Adicionar uma referência

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse no nó Referências ou Dependências e escolha Adicionar Referência de Projeto, Adicionar Referência de Projeto Compartilhado ou Adicionar Referência COM no menu de contexto. (Você pode clicar com o botão direito do mouse no nó do projeto e selecionar Adicionar no menu suspenso para escolher entre essas opções também.)

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

    O Gerenciador de Referências é aberto e lista as referências disponíveis por grupo.

    Screenshot of the Reference Manager dialog box in Visual Studio.

  2. Selecione uma referência a ser adicionada e, em seguida, selecione OK.

    Observação

    Se você não vir a referência que está procurando, selecione Procurar para localizar a referência. (Se você estiver desenvolvendo projetos C++, talvez não veja uma opção de navegação.)

Guia Assemblies (somente .NET Framework)

Observação

A guia Assemblies não está disponível para projetos destinados ao .NET Core ou ao .NET 5 e posterior, porque os assemblies para esses projetos são adicionados como pacotes NuGet ou são incluídos direcionando uma versão específica do .NET. Para ver os assemblies referenciados em um projeto, expanda o nó Dependências no projeto e procure em Estruturas. No nó Dependências você pode clicar com o botão direito do mouse para adicionar ou remover referências de projeto ou abrir o navegador de pacotes NuGet para gerenciar pacotes NuGet. Consulte Instalar e gerenciar pacotes no Visual Studio usando o Gerenciador de Pacotes do NuGet na documentação do NuGet.

Para projetos do .NET Framework, a guia Assemblies lista todos os assemblies do .NET que estão disponíveis para referência. A guia Assemblies não lista os assemblies do GAC (cache de assembly global), pois os assemblies no GAC fazem parte do ambiente de tempo de execução. Se você implantar ou copiar um aplicativo que contém uma referência a um assembly registrado no GAC, o assembly não será implantado ou copiado com o aplicativo, independentemente da configuração Copiar Local. Para obter mais informações, consulte Gerenciar referências em um projeto.

Ao adicionar uma referência manualmente a qualquer namespace EnvDTE (EnvDTE, EnvDTE80, EnvDTE90, EnvDTE90a ou EnvDTE100), defina a propriedade Inserir Tipos de Interoperabilidade da referência como Falso na janela Propriedades. Definir essa propriedade como Verdadeiro poderá causar problemas de build devido a determinadas propriedades de EnvDTE que não podem ser inseridas.

Todos os projetos da área de trabalho contêm uma referência implícita a mscorlib. Os projetos do Visual Basic contêm uma referência implícita a Microsoft.VisualBasic. Todos os projetos contêm uma referência implícita a System.Core, mesmo se ela for removida da lista de referências.

A guia Assemblies consiste em duas subguias:

  1. Framework lista todos os assemblies que constituem a estrutura de destino.

    Para projetos não direcionados ao .NET Core ou à Plataforma Universal do Windows, a guia Estrutura enumera os assemblies da estrutura de destino. O usuário precisa adicionar todas as referências exigidas pelo aplicativo.

    Por padrão, os projetos Universais do Windows contêm referências a todos os assemblies da estrutura de destino. Em projetos gerenciados, um nó somente leitura na pasta Referências no Gerenciador de Soluções indica a referência a todo a estrutura. Consequentemente, a guia Framework não enumerará nenhum dos assemblies da estrutura e exibirá a seguinte mensagem: "Todos os assemblies do Framework já estão referenciados. Use o Pesquisador de Objetos para explorar as referências no Framework”.

  2. Extensões lista todos os assemblies que os fornecedores externos de componentes e controles desenvolveram para estender a estrutura de destino. Dependendo da finalidade do aplicativo do usuário, esses assemblies podem ser necessários.

    As Extensões são populadas enumerando-se os assemblies registrados nos seguintes locais:

    Computador de 32 bits:

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

    Computador de 64 bits:

    • 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 versões mais antigas do [Identificador de estrutura de destino]

    Por exemplo, se um projeto tiver como destino o .NET Framework 4 em um computador de 32 bits, as Extensões enumerarão os assemblies registrados em \Microsoft.NETFramework\v4.0\AssemblyFoldersEx, \Microsoft.NETFramework\v3.5\AssemblyFoldersEx, \Microsoft.NETFramework\v3.0\AssemblyFoldersEx, and \Microsoft.NETFramework\v2.0\AssemblyFoldersEx.

Alguns componentes na lista podem não ser exibidos, dependendo da versão de estrutura do projeto. Essa situação pode ocorrer nas seguintes condições:

  • Um componente que usa uma versão de estrutura recente é incompatível com um projeto direcionado a uma versão anterior.

    Para saber mais sobre como alterar a versão da estrutura de destino de um projeto, confira Visão geral de destino da estrutura.

  • Um componente que usa uma versão mais antiga do .NET Framework não é compatível com um projeto direcionado a um .NET Framework mais recente.

Para obter mais informações sobre compatibilidade de versão entre versões do .NET Framework, consulte Compatibilidade de versão.

Você deve evitar adicionar referências de arquivo às saídas de outro projeto na mesma solução, porque fazer isso poderá causar erros de compilação. Em vez disso, use a guia Projetos da caixa de diálogo Adicionar Referência para criar referências projeto a projeto. Essa prática facilita o desenvolvimento em equipe, permitindo um melhor gerenciamento das bibliotecas de classes criadas nos projetos. Para obter mais informações, consulte Solução de problemas de referências desfeitas.

Observação

Uma referência de arquivo será criada, em vez de uma referência de projeto, se a versão da estrutura de destino de um projeto for .NET Framework 4.5 ou posterior e a versão de destino do outro projeto for .NET Framework 2, 3, 3.5 ou 4.0. Para obter mais informações sobre .NET, .NET Framework e .NET Core, consulte O que é .NET (e .NET Core).

Para exibir um assembly na caixa de diálogo Adicionar Referência

  • Mova ou copie o assembly para um dos seguintes locais:

    • O diretório atual do projeto. (É possível encontrar esses assemblies usando a guia Procurar.)

    • Outros diretórios do projeto na mesma solução. (É possível encontrar esses assemblies usando a guia Projetos.)

    - ou -

  • Defina uma chave do Registro que especifica o local dos assemblies a ser exibido:

    Para um sistema operacional de 32 bits, adicione uma das chaves do Registro a seguir.

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

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

    Para um sistema operacional de 64 bits, adicione uma das chaves do Registro a seguir em um hive do Registro de 32 bits.

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

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

    <VersionMinimum> é a versão de estrutura mínima aplicável. Se <VersionMinimum> for v3.0, as pastas especificadas em AssemblyFoldersEx se aplicarão a projetos que têm como destino o .NET Framework 3.0 e posterior.

    <AssemblyLocation> é o diretório dos assemblies que você deseja que sejam exibidos na caixa de diálogo Adicionar Referência, por exemplo, C:\MyAssemblies.

    A criação da chave do Registro sob o nó HKEY_LOCAL_MACHINE permite que todos os usuários vejam os assemblies no local especificado na caixa de diálogo Adicionar Referência. A criação da chave do Registro sob o nó HKEY_CURRENT_USER afeta somente a configuração do usuário atual.

    Abra a caixa de diálogo Adicionar Referência novamente. Os assemblies devem aparecer na guia .NET. Caso contrário, verifique se os assemblies estão localizados no diretório AssemblyLocation especificado, reinicie o Visual Studio e tente novamente.

Guia Projetos

A guia Projetos lista todos os projetos compatíveis dentro da solução atual, na subguia Solução.

Um projeto pode referenciar outro projeto direcionado a outra versão de estrutura. Por exemplo, você pode criar um projeto que tenha como destino o .NET 8.0, mas que faça referência a um assembly que foi criado para o .NET 6.0. Porém, o projeto do .NET 6.0 não pode fazer referência a um projeto do .NET Framework 8.0. Para obter mais informações, confira Visão geral do direcionamento de estrutura.

Guia Projetos Compartilhados

Adicione uma referência a um projeto compartilhado na guia Projetos Compartilhados da caixa de diálogo Gerenciador de Referências. Os Projetos Compartilhados permitem gravar códigos comuns que são referência de vários projetos de aplicativos diferentes.

Guia Windows Universal

A guia Windows Universal lista todos os SDKs específicos às plataformas na qual sistemas operacionais Windows estão em execução. Essa guia tem dois subgrupos: Núcleo e Extensões.

Subgrupo Núcleo

Por padrão, os Projetos de Aplicativo Universal do Windows têm uma referência ao SDK do Windows Universal. Consequentemente, o subgrupo de Núcleo no Gerenciador de Referências não enumera nenhum dos assemblies do SDK do Windows Universal.

Subgrupos Extensões

Extensões lista os SDKs do usuário que estendem a plataforma de destino do Windows.

O SDK é uma coleção de arquivos que o Visual Studio trata como um único componente. Na guia Extensões, os SDKs que se aplicam ao projeto do qual a caixa de diálogo Gerenciador de Referências foi invocada são listados como entradas únicas. Quando adicionado a um projeto, todo o conteúdo do SDK é consumido pelo Visual Studio de modo que o usuário não precisa realizar ações adicionais para aproveitar os conteúdos do SDK no IntelliSense, na caixa de ferramentas, no designer, no Pesquisador de Objetos, no build, na implantação, depuração nem nos pacotes.

Para obter informações sobre como exibir o SDK na guia Extensões, consulte Criar um Software Development Kit.

Observação

Se um projeto referenciar um SDK que depende de outro SDK, o Visual Studio não consumirá o segundo SDK a menos que você adicione manualmente uma referência ao segundo SDK. Quando você escolhe um SDK na guia Extensões, a caixa de diálogo Gerenciador de Referências ajuda a identificar dependências do SDK listando todas as dependências no painel de detalhes.

Se um tipo de projeto não der suporte para extensões, essa guia não será exibida na caixa de diálogo Gerenciador de Referências.

Guia COM

A guia COM lista todos os componentes COM disponíveis para referência. Se você deseja adicionar uma referência a uma DLL COM registrada que contém um manifesto interno, cancele o registro da DLL primeiro. Caso contrário, em vez de adicionar a referência do assembly como uma DLL nativa, o Visual Studio a adicionará como um Controle ActiveX.

Se um tipo de projeto não der suporte ao COM, a guia não será exibida na caixa de diálogo Gerenciador de Referências.

Procurar

É possível usar o botão Procurar para procurar um componente no sistema de arquivos.

Um projeto pode referenciar um componente direcionado a outra versão de estrutura. Por exemplo, você pode criar um aplicativo direcionado ao .NET Framework 4.7.2, mas que referencia um componente direcionado ao .NET Framework 4. Para obter mais informações, confira Visão geral do direcionamento de estrutura.

Evite adicionar referências de arquivo às saídas de outro projeto na mesma solução, porque essa tática pode causar erros de compilação. Em vez disso, use a guia Solução da caixa de diálogo Gerenciador de Referências para criar referências projeto a projeto. Essa ação facilita o desenvolvimento em equipe, permitindo um melhor gerenciamento das bibliotecas de classes criadas nos projetos. Para obter mais informações, consulte Solução de problemas de referências desfeitas.

Não é possível navegar até o SDK e adicioná-lo ao projeto. Você pode apenas procurar um arquivo (por exemplo, um assembly ou um .winmd) e adicioná-lo ao seu projeto.

Ao fazer uma referência de arquivo a um WinMD, o layout previsto é que os arquivos <FileName>.winmd, <FileName>.dll e <FileName>.pri sejam colocados um ao lado do outro. Se você referenciar um WinMD nos seguintes cenários, um conjunto incompleto de arquivos são copiados no diretório de saída do projeto e, consequentemente, falhas de compilação e de runtime ocorrem.

  • Componente nativo: um projeto nativo cria um WinMD para cada conjunto não contínuo de namespaces e uma DLL que consiste na implementação. Os WinMDs têm nomes distintos. Ao fazer referência a esse arquivo de componente nativo, o MSBuild não reconhece que os WinMDs nomeados de forma diferente formam um componente. Portanto, somente o nome idêntico <FileName>.dll e <FileName>.winmd são copiados e ocorrem erros de runtime. Para resolver esse problema, crie uma SDK de extensão. Para obter mais informações, consulte Criar um Software Development Kit.

  • Consumindo controles: no mínimo, um controle XAML consiste em um <FileName>.winmd, <FileName>.dll, <FileName>.pri, <XamlName>.xaml e <ImageName>.jpg. Quando o projeto for compilado, os arquivos de recursos associados à referência de arquivo não são copiados no diretório de saída do projeto e apenas <FileName>.winmd, <FileName>.dll e <FileName>.pri são copiados. Um erro de build é registrado que indica que os recursos <XamlName>.xaml e <ImageName>.jpg estão ausentes. Para ter êxito, copie manualmente esses arquivos de recurso no diretório de saída do projeto para a compilação e a depuração/runtime. Para resolver esse problema, crie um SDK de Extensão seguindo as etapas em Criar um Software Development Kit ou edite o arquivo de projeto para adicionar a seguinte propriedade:

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

    Observação

    Se você adicionar a propriedade, a compilação pode ficar mais lenta.

Recentes

Assemblies, COM, Windows e Navegador dão suporte a uma guia Recente, que enumera a lista de componentes adicionados recentemente aos projetos.

A barra de pesquisa na caixa de diálogo Gerenciador de Referências opera na guia que está no foco. Por exemplo, se você digitar “Sistema” na barra de pesquisa enquanto a guia Solução estiver no foco, a pesquisa não retorna nenhum resultado a menos que a solução consista em um nome de projeto que contenha “Sistema”.

Remover uma referência

Você pode remover referências não usadas para projetos de estilo do SDK no Visual Studio usando o item de menu Remover Referência Não Usada.

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

Para obter mais informações, consulte Remover referências não usadas.