Introdução a projetos e soluções

Este artigo introdutório analisa o que significa criar uma solução e um projeto no Visual Studio. Uma solução é um contêiner para organizar um ou mais projetos de código relacionados, por exemplo, um projeto de biblioteca de classes e um projeto de teste correspondente.

Como um exercício educacional para compreendermos o conceito de um projeto, desenvolveremos uma solução e um projeto do zero. Normalmente, você usaria modelos de projeto do Visual Studio para criar novos projetos. Você também analisará as propriedades de um projeto e alguns dos arquivos ali contidos e criará uma referência de um projeto para outro.

Observação

O desenvolvimento de aplicativos no Visual Studio não requer soluções e projetos. Basta também abrir uma pasta que contém o código e começar a codificar, compilar e depurar. Por exemplo, se você clonar um repositório GitHub, ele pode não conter projetos nem soluções do Visual Studio. Para obter mais informações, consulte Desenvolver código no Visual Studio sem projetos nem soluções.

Se você ainda não tiver instalado o Visual Studio 2019, acesse a página Downloads do Visual Studio para a instalação gratuita.

Se você ainda não tiver instalado o Visual Studio, acesse a página Downloads do Visual Studio para instalá-lo gratuitamente.

Soluções e projetos

No Visual Studio, uma solução não é uma "resposta". Uma solução é apenas um contêiner do Visual Studio usado para organizar um ou mais projetos relacionados. Quando você abre uma solução, o Visual Studio carrega automaticamente todos os projetos contidos na solução.

Criar uma solução

Inicie nossa análise criando uma solução vazia. Depois de se familiarizar com o Visual Studio, você provavelmente não vai criar soluções vazias com muita frequência. Quando você cria um novo projeto, o Visual Studio cria automaticamente uma solução para o projeto, a menos que uma solução já esteja aberta.

  1. Abra o Visual Studio.

  2. Na janela inicial, selecione Criar um novo projeto.

  3. Na página Criar um novo projeto, insira solução em branco na caixa de pesquisa, selecione o modelo Solução em Branco e selecione Avançar.

    Screenshot that shows a Blank Solution template selected in Visual Studio 2019.

    Dica

    Se você tiver várias cargas de trabalho instaladas, o modelo Solução em Branco poderá não aparecer na parte superior da lista de resultados da pesquisa. Tente rolar para a seção Outros resultados com base na sua pesquisa da lista. Deve ser exibido como:

  4. Nomeie a solução como QuickSolution e selecione Criar.

    A solução aparece no Gerenciador de Soluções do lado direito da janela do Visual Studio. Você provavelmente usará o Gerenciador de Soluções muitas vezes para navegar pelo conteúdo de seus projetos.

  1. Abra o Visual Studio e, na janela de início, selecione Criar um novo projeto.

  2. Na página Criar um novo projeto, insira solução em branco na caixa de pesquisa, selecione o modelo Solução em Branco e selecione Avançar.

    Screenshot that shows a Blank Solution template selected in Visual Studio.

    Dica

    Se você tiver várias cargas de trabalho instaladas, o modelo Solução em Branco poderá não aparecer na parte superior da lista de resultados da pesquisa. Tente rolar por Outros resultados com base na sua pesquisa para localizar o modelo.

  3. Na página Configurar seu novo projeto, nomeie a solução QuickSolution e selecione Criar.

    A solução QuickSolution aparece no Gerenciador de Soluções do lado direito da janela do Visual Studio. Provavelmente, você usará o Gerenciador de Soluções para navegar pelos conteúdos de seus projetos.

Adicionar um projeto

Agora adicione seu primeiro projeto à solução. Comece com um projeto vazio e adicione os itens necessários.

  1. Ao clicar com o botão direito do mouse ou no menu de atalho da Solução ´QuickSolution’ no Gerenciador de Soluções, selecione Adicionar>Novo Projeto.

    Uma caixa de diálogo é aberta com o título Adicionar um novo projeto.

  2. Insira o texto vazio na caixa de pesquisa na parte superior e, em seguida, selecione C# em Idioma.

  3. Selecione o modelo Projeto Vazio (.NET Framework) e, em seguida, Avançar.

  4. Nomeie o projeto QuickDate e, em seguida, selecione Criar.

    Um projeto chamado QuickDate é exibido abaixo da solução no Gerenciador de Soluções. Atualmente, ele contém um único arquivo chamado App.config.

    Observação

    Se você não visualizar o modelo Projeto Vazio (.NET Framework), instale a carga de trabalho do Visual Studio de desenvolvimento para área de trabalho do .NET. O Visual Studio usa a instalação baseada em carga de trabalho para instalar somente os componentes necessários para o tipo de desenvolvimento realizado.

    Uma maneira fácil de instalar uma nova carga de trabalho ao criar um novo projeto é selecionar o link Instalar mais ferramentas e recursos no texto indicando Não encontrou o que estava procurando?. Depois que o Instalador do Visual Studio for iniciado, selecione a carga de trabalho Desenvolvimento para desktop do .NET e, em seguida, o botão Modificar.

    Screenshot that shows the Open Visual Studio Installer link.

  1. Clique com o botão direito do mouse na Solução ´QuickSolution’ no Gerenciador de Soluções, selecione Adicionar>Novo Projeto do menu de contexto.

  2. Na página Adicionar um novo projeto, digite vazio na caixa de pesquisa na parte superior e selecione C# em Todos os idiomas.

  3. Selecione o modelo #C Projeto Vazio (.NET Framework) e, em seguida, Avançar.

    Observação

    O Visual Studio usa a instalação baseada em carga de trabalho para instalar somente os componentes necessários para o tipo de desenvolvimento realizado. Se você não visualizar o modelo Projeto Vazio (.NET Framework), será necessário instalar a carga de trabalho do Visual Studio de desenvolvimento para área de trabalho do .NET.

    Uma maneira fácil de instalar uma nova carga de trabalho ao criar um novo projeto é selecionar o link Instalar mais ferramentas e recursos no texto indicando Não encontrou o que estava procurando?. No Instalador do Visual Studio, selecione a carga de trabalho de desenvolvimento para área de trabalho do .NET e, em seguida, escolha Modificar.

    Screenshot that shows the Open Visual Studio Installer link.

  4. Na página Configurar seu novo projeto, nomeie o projeto QuickDate e selecione Criar.

    O projeto QuickDate aparece na solução em Gerenciador de Soluções. O projeto contém um nó Referências e um único arquivo chamado App.config.

Adicionar um item ao projeto

Adicione um arquivo de código ao seu projeto vazio.

  1. No menu de atalho ou com o botão direito do mouse no projeto QuickDate no Gerenciador de Soluções, selecione Adicionar>Novo Item.

    A caixa de diálogo Adicionar Novo Item é aberta. Selecione Mostrar todos os modelos se a caixa de diálogo for aberta no modo de exibição compacto.

  2. Expanda Itens do Visual C#e selecione Código. No painel central, selecione o modelo de item Classe. Em Nome, digite Calendário e selecione Adicionar.

    O Visual Studio adiciona um arquivo chamado Calendar.cs ao projeto. O .cs no final é a extensão de arquivo fornecida aos arquivos de código C#. O arquivo Calendar.cs aparece na hierarquia do projeto visual Gerenciador de Soluções e o arquivo é aberto no editor.

  3. Substitua o conteúdo do arquivo Calendar.cs pelo seguinte código:

    using System;
    
    namespace QuickDate
    {
        internal class Calendar
        {
            static void Main(string[] args)
            {
                DateTime now = GetCurrentDate();
                Console.WriteLine($"Today's date is {now}");
                Console.ReadLine();
            }
    
            internal static DateTime GetCurrentDate()
            {
                return DateTime.Now.Date;
            }
        }
    }
    

    Não é preciso entender tudo o que o código está fazendo. Execute o aplicativo pressionando Ctrl+F5 e veja se o aplicativo imprime a data de hoje no console ou na janela de saída padrão. Feche a janela do console.

Adicionar um segundo projeto

Geralmente, as soluções contêm mais de um projeto e esses projetos referenciem uns aos outros. Alguns projetos em uma solução podem ser bibliotecas de classes, alguns aplicativos executáveis e outros podem ser projetos de teste de unidade ou sites.

Para adicionar um projeto de teste de unidade à sua solução, comece com um modelo de projeto para que você não precise adicionar outro arquivo de código ao projeto.

  1. Ao clicar com o botão direito do mouse ou no menu de atalho da Solução ´QuickSolution’ no Gerenciador de Soluções, selecione Adicionar>Novo Projeto.

  2. Na caixa de diálogo Adicionar um novo projeto, insira o texto teste de unidade na caixa de pesquisa na parte superior e, em seguida, selecione C# em Idioma.

  3. Selecione o modelo de projeto Projeto de Teste de Unidade para .NET Core e, em seguida, selecione Avançar.

    Observação

    No Visual Studio 2019 versão 16.9 e posteriores, o nome do modelo de projeto MSTest foi alterado de Projeto de Teste de Unidade do MSTest (.NET Core) para Projeto de Teste de Unidade. Várias etapas na criação do projeto foram alteradas nesta atualização.

  4. Nomeie o projeto QuickTest e escolha Avançar.

  5. Selecione a estrutura de destino recomendada (.NET Core 3.1) ou .NET 5 e selecione Criar.

    Um segundo projeto é adicionado ao Gerenciador de Soluções e um arquivo chamado UnitTest1.cs é aberto no editor.

    Screenshot that shows Solution Explorer with two projects.

  1. Ao clicar com o botão direito do mouse ou no menu de atalho da Solução ´QuickSolution’ no Gerenciador de Soluções, selecione Adicionar>Novo Projeto.

  2. Na caixa de diálogo Adicionar um novo projeto, insira teste de unidade na caixa de pesquisa na parte superior e, em seguida, selecione C# em Todos os idiomas.

  3. Selecione o modelo de projeto #C Projeto de Teste de Unidade (.NET Framework) e selecione Avançar.

  4. Na página Configurar seu novo projeto, nomeie o projeto QuickTest e selecione Criar.

    O Visual Studio adiciona o projeto QuickTest a Gerenciador de Soluções e o arquivo UnitTest1.cs é aberto no editor.

    Screenshot that shows Solution Explorer with two projects.

Adicionar uma referência ao projeto

Vamos usar o novo projeto de teste de unidade para testar seu método no projeto QuickDate. Portanto, precisamos adicionar uma referência a esse projeto QuickDate ao QuickTest. A adição de referência cria uma dependência de build entre os dois projetos, o que significa que quando a solução é criada, o QuickDate cria antes o QuickTest.

  1. Selecione o nó Dependências no projeto QuickTest e, ao clicar com o botão direito do mouse ou no menu de contexto, selecione Adicionar referência de projeto.

    A caixa de diálogo Gerenciador de Referências é aberta.

  2. No painel esquerdo, expanda Projetos e selecione Solução. No painel central, selecione a caixa de seleção ao lado de QuickDate e, em seguida, selecione OK.

    Uma referência ao projeto QuickDate será adicionada.

    A screenshot of Solution Explorer showing a project reference in Visual Studio 2019.

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no nó Referências do projeto QuickTest e selecione Adicionar Referência no menu de contexto.

  2. Na caixa de diálogo Gerenciador de Referência, selecione Projetos. No painel central, selecione a caixa de seleção ao lado de QuickDate e, em seguida, selecione OK.

    Uma referência ao projeto QuickDate aparece no projeto QuickTest em Gerenciador de Soluções.

    A screenshot of Solution Explorer showing a project reference.

Adicionar código de teste

  1. Agora, adicione o código de teste ao arquivo de código de teste C#. Substitua o conteúdo do UnitTest1.cs pelo seguinte código:

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace QuickTest
    {
        [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            public void TestGetCurrentDate()
            {
                Assert.AreEqual(DateTime.Now.Date, QuickDate.Calendar.GetCurrentDate());
            }
        }
    }
    

    Uma linha sinuosa vermelha aparece em alguns dos códigos. É possível corrigir esse erro ao tornar o projeto de teste um assembly amigável para o projeto QuickDate.

  2. No arquivo Calendar.cs, adicione a instrução using a seguir e o InternalsVisibleToAttributeatributo à parte superior do arquivo, para resolver o erro no projeto de teste.

    using System.Runtime.CompilerServices;
    
    [assembly: InternalsVisibleTo("QuickTest")]
    

    O código Calendar.cs deve ser semelhante a esta captura de tela:

    Screenshot that shows C Sharp code.

    Screenshot that shows C Sharp code.

Execute o teste de unidade

Para verificar se seu teste de unidade está funcionando, selecione Teste>Executar Todos os Testes na barra de menu. A janela Gerenciador de Testes será aberta e você verá que o teste TestGetCurrentDate será aprovado.

Screenshot that shows Test Explorer with a passed test.

Screenshot that shows Test Explorer with a passed test.

Dica

Abra também o Gerenciador de Testes escolhendo Teste>Gerenciador de Testes na barra de menu.

Propriedades do projeto

A linha no arquivo Calendar.cs que contém o atributo InternalsVisibleToAttribute referencia o nome do assembly ou nome de arquivo do projeto QuickTest. O nome do assembly pode não ser sempre o mesmo que o nome do projeto. Para localizar o nome do assembly de um projeto, use as propriedades do projeto. As páginas de propriedades contêm várias configurações para o projeto.

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto QuickTest e selecione Propriedades ou selecione o projeto e pressione Alt+Enter.

    As páginas de propriedades do projeto são abertas na guia Aplicativo. O nome do assembly do projeto QuickTest é, de fato, QuickTest.

    Se desejar, é possível alterar o nome aqui. Quando você criar o projeto de teste, o nome do arquivo binário resultante será alterado de QuickTest.dll para <NewName>.dll.

    Screenshot that shows project properties.

    Screenshot that shows project properties.

  2. Explore algumas das outras guias das páginas de propriedades do projeto, como Build e Depurar. Essas guias são diferentes para diferentes tipos de projetos.

Confira também