Gerenciar referências em um projetoManage references in a project

Antes de escrever código em um componente externo ou um serviço conectado, o projeto primeiro deve conter uma referência a ele.Before you write code against an external component or connected service, your project must first contain a reference to it. Basicamente, uma referência é uma entrada em um arquivo de projeto que contém as informações de que o Visual Studio precisa para localizar o componente ou o serviço.A reference is essentially an entry in a project file that contains the information that Visual Studio needs to locate the component or the service.

Para adicionar uma referência, clique com o botão direito do mouse no nó Referências ou Dependências no Gerenciador de Soluções e escolha Adicionar Referência.To add a reference, right click on the References or Dependencies node in Solution Explorer and choose Add Reference. Você também pode clicar com o botão direito do mouse no nó do projeto e selecionar Adicionar > referência.You can also right-click on the project node and select Add > Reference. Para obter mais informações, consulte como: Adicionar ou remover referências.For more information, see How to: Add or remove references.

Adicionar uma referência no Visual C++

É possível adicionar uma referência aos seguintes tipos de componentes e serviços:You can add a reference to the following types of components and services:

  • Bibliotecas de classes ou assemblies .NET.NET class libraries or assemblies

  • Aplicativos UWPUWP apps

  • componentes COMCOM components

  • Outros assemblies ou bibliotecas de classes de projetos na mesma soluçãoOther assemblies or class libraries of projects in the same solution

  • Projetos compartilhadosShared projects

  • Serviços Web XMLXML Web services

Referências ao aplicativo UWPUWP app references

Referências de projetoProject references

Os projetos da UWP (Plataforma Universal do Windows) podem criar referências a outros projetos da UWP na solução ou a projetos ou binários do Windows 8.1, desde que esses projetos não usem APIs que foram preteridas do Windows 10.Universal Windows Platform (UWP) projects can create references to other UWP projects in the solution, or to Windows 8.1 projects or binaries, provided that these projects do not use APIs that have been deprecated in Windows 10. Para obter mais informações, consulte Mover do Windows Runtime 8 para a UWP.For more information, see Move from Windows Runtime 8 to UWP.

Se você optar por redirecionar Windows 8.1 projetos para o Windows 10, consulte porta, migrar e atualizar projetos do Visual Studio.If you choose to retarget Windows 8.1 projects to Windows 10, see Port, migrate, and upgrade Visual Studio projects.

Referências do SDK da ExtensãoExtension SDK references

Os aplicativos UWP (Plataforma Universal do Windows) em Visual Basic, C#, C++ e JavaScript podem referenciar os SDKs de Extensão direcionados ao Windows 8.1, desde que esses SDKs de Extensão não usem APIs que foram preteridas no Windows 10.Visual Basic, C#, C++ and JavaScript Universal Windows Platform (UWP) apps can reference Extension SDKs that target Windows 8.1, as long as these Extension SDKs do not use APIs that have been deprecated in Windows 10. Confira o site do fornecedor do SDK da Extensão para descobrir se ele pode ser referenciado por aplicativos UWP.Please check the Extension SDK vendor site to find out whether it can be referenced by UWP apps.

Se você determinar que não há suporte para o SDK de Extensão que está sendo referenciado pelo aplicativo, é necessário realizar as seguintes etapas:If you determine that the Extension SDK being referenced by your app is not supported, then you need to perform the following steps:

  1. Observe o nome do projeto que está causando o erro.Look at the name of the project that is causing the error. A plataforma de destino do projeto é indicada entre parênteses ao lado do nome do projeto.The platform your project is targeting is noted in parentheses next to the project name. Por exemplo, MyProjectName (Windows 8.1) significa que o projeto MyProjectName se destina à versão da plataforma Windows 8.1.For example, MyProjectName (Windows 8.1) means that your project MyProjectName is targeting platform version Windows 8.1.

  2. Acesse o site do fornecedor que é proprietário do SDK de Extensão sem suporte e instale a versão do SDK de Extensão com dependências que são compatíveis com a versão da plataforma de destino do projeto.Go to the site of the vendor who owns the unsupported Extension SDK, and install the version of the Extension SDK with dependencies that are compatible with the version of the platform your project is targeting.

    Observação

    Uma maneira de descobrir se um SDK de Extensão tem dependências em outros SDKs de Extensão é examinar no Gerenciador de Referências.One way to find out whether an Extension SDK has dependencies on other Extension SDKs is by looking in Reference Manager. Reinicie o Visual Studio, crie um novo projeto de aplicativo UWP de C#, clique com o botão direito do mouse no projeto e escolha Adicionar Referência.Restart Visual Studio, create a new C# UWP app project, and then right-click on the project and choose Add Reference. Acesse a guia Windows, a subguia Extensões e selecione o SDK de Extensão.Go to the Windows tab, then the Extensions sub-tab, and select the Extension SDK. Examine o painel à direita no Gerenciador de Referências.Look at the right pane in the Reference Manager. Se ele tiver dependências, elas serão listadas no painel.If it has dependencies, they will be listed there.

    Importante

    Se o projeto tiver como destino o Windows 10 e o SDK de Extensão instalado na etapa anterior tiver uma dependência do Pacote de Runtime do Microsoft Visual C++, a versão do Pacote de Runtime do Microsoft Visual C++ compatível com o Windows 10 será v14.0 e ela será instalada com o Visual Studio.If your project is targeting Windows 10, and the Extension SDK installed in the previous step has a dependency on the Microsoft Visual C++ Runtime Package, the version of Microsoft Visual C++ Runtime Package that is compatible with Windows 10 is v14.0, and is installed with Visual Studio.

  3. Se o SDK de Extensão instalado na etapa anterior tiver dependências de outros SDKs de Extensão, acesse os sites dos fornecedores proprietários das dependências e instale as versões dessas dependências compatíveis com a versão da plataforma de destino do projeto.If the Extension SDK you installed in the previous step has dependencies on other Extension SDKs, go to the sites of the vendors who own the dependencies, and install the versions of these dependencies that are compatible with the version of the platform your project is targeting.

  4. Reinicie o Visual Studio e abra o aplicativo.Restart Visual Studio and open your app.

  5. Clique com o botão direito do mouse no nó Referências ou Dependências do projeto que causou o erro e escolha Adicionar Referência.Right-click on the References or Dependencies node in the project that caused the error and choose Add Reference.

  6. Clique na guia Windows e, em seguida, na subguia Extensões, desmarque as caixas de seleção dos SDKs de Extensão antigos e marque as caixas de seleção dos novos SDKs de Extensão.Click the Windows tab and then the Extensions sub-tab, then uncheck the checkboxes for the old Extension SDKs, and check the checkboxes for the new Extension SDKs. Clique em OK.Click OK.

Adicionar uma referência em tempo de designAdd a reference at design time

Ao fazer uma referência a um assembly no projeto, o Visual Studio pesquisa o assembly nos seguintes locais:When you make a reference to an assembly in your project, Visual Studio searches for the assembly in the following locations:

  • O diretório atual do projeto.The current project directory. (É possível encontrar esses assemblies usando a guia Procurar.)(You can find these assemblies by using the Browse tab.)

  • Outros diretórios do projeto na mesma solução.Other project directories in the same solution. (É possível encontrar esses assemblies na guia Projetos.)(You can find these assemblies on the Projects tab.)

Observação

  • Todos os projetos contêm uma referência implícita para mscorlib.All projects contain an implied reference to mscorlib.
  • Todos os projetos contêm uma referência implícita a System.Core, mesmo se System.Core for removido da lista de referências.All projects contain an implied reference to System.Core, even if System.Core is removed from the list of references.
  • Os projetos do Visual Basic contêm uma referência implícita a Microsoft.VisualBasic.Visual Basic projects contain an implied reference to Microsoft.VisualBasic.

Referências a componentes compartilhados no tempo de execuçãoReferences to shared components at run time

Em tempo de execução, os componentes devem estar no caminho de saída do projeto ou no GAC (Cache de Assembly Global).At run time, components must be either in the output path of the project or in the Global Assembly Cache (GAC). Se o projeto contiver uma referência a um objeto que não está em um desses locais, será necessário copiar a referência para o caminho de saída do projeto ao compilá-lo.If the project contains a reference to an object that is not in one of these locations, you must copy the reference to the output path of the project when you build the project. A propriedade CopyLocal indica se esta cópia precisa ser feita.The CopyLocal property indicates whether this copy has to be made. Se o valor for True, a referência será copiada para o diretório do projeto durante o build do projeto.If the value is True, the reference is copied to the project directory when you build the project. Se o valor for False, a referência não será copiada.If the value is False, the reference is not copied.

Se você implantar um aplicativo que contenha uma referência a um componente personalizado que esteja registrado no GAC, o componente não será implantado com o aplicativo, independentemente da configuração de CopyLocal.If you deploy an application that contains a reference to a custom component that is registered in the GAC, the component will not be deployed with the application, regardless of the CopyLocal setting. Nas versões anteriores do Visual Studio, era possível definir a propriedade CopyLocal em uma referência para garantir que o assembly fosse implantado.In earlier versions of Visual Studio, you could set the CopyLocal property on a reference to ensure that the assembly was deployed. Agora, é necessário adicionar o assembly à pasta \Bin manualmente.Now, you must manually add the assembly to the \Bin folder. Isso coloca todo o código personalizado sob análise, reduzindo o risco de publicar um código personalizado com o qual você não está familiarizado.This puts all custom code under scrutiny, reducing the risk of publishing custom code with which you are not familiar.

Por padrão, a propriedade CopyLocal será definida como False se o assembly ou o componente estiver no cache de assembly global ou for um componente de estrutura.By default, the CopyLocal property is set to False if the assembly or component is in the global assembly cache or is a framework component. Caso contrário, o valor será definido como True.Otherwise, the value is set to True. Referências projeto a projeto são sempre definidas como True.Project-to-project references are always set to True.

Referenciar um projeto ou um assembly direcionado a outra versão do .NETReference a project or assembly that targets a different version of .NET

É possível criar aplicativos que referenciam projetos ou assemblies direcionados a outra versão do .NET.You can create applications that reference projects or assemblies that target a different version of the .NET. Por exemplo, é possível criar um aplicativo que tem como destino o .NET Framework 4.6, que referencia um assembly que tem como destino o .NET Framework 4.5.For example, you could create an application that targets .NET Framework 4.6, that references an assembly that targets .NET Framework 4.5. Se criar um projeto direcionado a uma versão anterior do .NET, você não poderá definir uma referência nesse projeto a um projeto ou um assembly direcionado a uma versão mais recente.If you create a project that targets an earlier version of .NET, you cannot set a reference in that project to a project or assembly that targets a newer version.

Para obter mais informações, confira Visão geral do direcionamento de estrutura.For more information, see Framework targeting overview.

Referências projeto a projetoProject-to-project references

Referências projeto a projeto são referências a projetos que contêm assemblies; é possível adicioná-las usando a guia Projetos na caixa de diálogo Gerenciador de Referências.Project-to-project references are references to projects that contain assemblies; you add project references by using the Projects tab of the Reference Manager dialog box. O Visual Studio pode encontrar um assembly quando receber um caminho para o projeto.Visual Studio can find an assembly when given a path to the project.

Quando você tiver um projeto que produz um assembly, será necessário referenciar o projeto e não usar uma referência de arquivo (consulte abaixo).When you have a project that produces an assembly, you should reference the project and not use a file reference (see below). A vantagem de uma referência projeto a projeto é que ela cria uma dependência entre os projetos no sistema de build.The advantage of a project-to-project reference is that it creates a dependency between the projects in the build system. O projeto dependente será compilado se ele tiver sido alterado desde a última vez que o projeto de referência foi compilado.The dependent project will be built if it has changed since the last time the referencing project was built. Uma referência de arquivo não cria uma dependência de build e, portanto, é possível compilar o projeto de referência sem compilar o projeto dependente, e a referência pode se tornar obsoleta.A file reference does not create a build dependency, so it is possible to build the referencing project without building the dependent project, and the reference can become obsolete. (Ou seja, o projeto pode fazer referência a uma versão criada anteriormente do projeto.) Isso pode resultar na necessidade de várias versões de uma única DLL no diretório bin , o que não é possível.(That is, the project can reference a previously built version of the project.) This can result in several versions of a single DLL being required in the bin directory, which is not possible. Quando ocorrer esse conflito, você verá uma mensagem como “Aviso: o 'arquivo' de dependência no projeto 'projeto' não pode ser copiado para o diretório de execução, pois ele substituirá o 'arquivo' de referência”.When this conflict occurs, you will see a message such as "Warning: the dependency 'file' in project 'project' cannot be copied to the run directory because it would overwrite the reference 'file.'". Para obter mais informações, consulte Solução de problemas de referências desfeitas e Como criar e remover dependências de projeto.For more information, see Troubleshoot broken references and How to: Create and remove project dependencies.

Observação

Uma referência de arquivo será criada em vez de uma referência projeto a projeto se a versão de destino do .NET Framework de um projeto for a versão 4.5 e a versão de destino do outro projeto for a versão 2, 3, 3.5 ou 4.0.A file reference instead of a project-to-project reference is created if the target version of the .NET Framework of one project is version 4.5, and the target version of the other project is version 2, 3, 3.5, or 4.0.

Referências de projeto compartilhadoShared project references

Ao contrário da maioria dos outros tipos de projetos, um projeto compartilhado não tem nenhuma saída binária.Unlike most other project types, a shared project does not have any binary output. Em vez disso, o código é compilado em cada projeto que faz referência a ele.Instead, the code is compiled into each project that references it. Os Projetos Compartilhados permitem gravar códigos comuns que são referência de vários projetos de aplicativos diferentes.Shared Projects let you write common code that's referenced by a number of different application projects. O código é compilado como parte de cada projeto de referência e pode incluir diretivas de compilador para ajudar a incorporar a funcionalidade específica da plataforma à base de código compartilhada.The code is compiled as part of each referencing project and can include compiler directives to help incorporate platform-specific functionality into the shared code base. Adicione uma referência a um projeto compartilhado na guia Projetos Compartilhados da caixa de diálogo Gerenciador de Referências.Add a reference to a shared project on the Shared Projects tab of the Reference Manager dialog box.

Referências de arquivoFile references

Referências de arquivo são referências diretas a assemblies fora do contexto de um projeto do Visual Studio.File references are direct references to assemblies outside the context of a Visual Studio project. Crie-as usando a guia Procurar da caixa de diálogo Gerenciador de Referências.You create them by using the Browse tab of the Reference Manager dialog box. Use uma referência de arquivo quando você tiver apenas um assembly ou componente e não o projeto que o cria como a saída.Use a file reference when you just have an assembly or component, and not the project that creates it as output.

Consulte tambémSee also