{"meta":{"title":"Criar e testar .NET","intro":"Saiba como criar um fluxo de trabalho de integração contínua (CI) para criar e testar seu projeto .NET.","product":"GitHub Actions","breadcrumbs":[{"href":"/pt/actions","title":"GitHub Actions"},{"href":"/pt/actions/tutorials","title":"Tutoriais"},{"href":"/pt/actions/tutorials/build-and-test-code","title":"Criar e testar código"},{"href":"/pt/actions/tutorials/build-and-test-code/net","title":".NET"}],"documentType":"article"},"body":"# Criar e testar .NET\n\nSaiba como criar um fluxo de trabalho de integração contínua (CI) para criar e testar seu projeto .NET.\n\n## Introdução\n\nEste guia mostra como criar, testar e publicar um pacote no .NET.\n\nOs executores hospedados do GitHub têm um cache de ferramentas com software pré-instalado, que inclui o SDK do .NET Core. Para ver a lista completa de programas de software atualizados e as versões pré-instaladas do SDK do .NET Core, consulte [software instalado nos executores hospedados do GitHub](/pt/actions/concepts/runners/github-hosted-runners).\n\n## Pré-requisitos\n\nVocê já deve estar familiarizado com a sintaxe YAML e como ela é usada com GitHub Actions. Para saber mais, confira [Sintaxe de fluxo de trabalho para o GitHub Actions](/pt/actions/reference/workflows-and-actions/workflow-syntax).\n\nRecomendamos que você tenha um entendimento básico do .NET Core SDK. Para obter mais informações, confira [Introdução ao .NET](https://dotnet.microsoft.com/learn).\n\n## Usando um modelo de fluxo de trabalho do .NET\n\nPara uma introdução rápida, adicione um modelo de fluxo de trabalho ao diretório `.github/workflows` do repositório.\n\nGitHubfornece um modelo de fluxo de trabalho para .NET que deve funcionar para a maioria dos projetos .NET. As seções subsequentes deste guia fornecem exemplos de como você pode personalizar esse modelo de fluxo de trabalho.\n\n1. Em GitHub, acesse a página principal do repositório.\n\n2. No nome do repositório, clique em **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg> Actions**.\n\n   ![Captura de tela das guias do repositório \"github/docs\". A guia \"Ações\" está realçada com um contorno laranja.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n\n3. Se você já tiver um fluxo de trabalho no repositório, clique em **Novo fluxo de trabalho**.\n\n4. A página \"Escolher um fluxo de trabalho\" mostra uma seleção de modelos de fluxo de trabalho recomendados. Pesquise por \"dotnet\".\n\n5. No fluxo de trabalho \".NET\", clique em **Configurar**.\n\n6. Edite o fluxo de trabalho conforme necessário. Por exemplo, altere a versão do .NET.\n\n7. Clique em **Confirmar alterações**.\n\n   O `dotnet.yml` arquivo de fluxo de trabalho é adicionado ao `.github/workflows` diretório do repositório.\n\n## Especificando uma versão do .NET\n\nPara usar uma versão pré-instalada do SDK do .NET Core em um executor hospedado do GitHub, use a ação `setup-dotnet`. Essa ação localiza uma versão específica do .NET no cache de ferramentas em cada executor e adiciona os binários necessários a `PATH`. Estas alterações persistirão para o resto do trabalho.\n\nA ação `setup-dotnet` é a maneira recomendada de usar o .NET com GitHub Actions, pois garante comportamento consistente em diferentes executores e versões diferentes do .NET. Se você estiver usando um executor auto-hospedado, precisará instalar o .NET e adicioná-lo a `PATH`. Para obter mais informações, consulte a ação [`setup-dotnet`](https://github.com/marketplace/actions/setup-net-core-sdk).\n\n### Usar múltiplas versões do .NET\n\n```yaml\nname: dotnet package\n\non: [push]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        dotnet-version: [ '3.1.x', '6.0.x' ]\n\n    steps:\n      - uses: actions/checkout@v6\n      - name: Setup dotnet ${{ matrix.dotnet-version }}\n        uses: actions/setup-dotnet@v4\n        with:\n          dotnet-version: ${{ matrix.dotnet-version }}\n      # You can test your matrix by printing the current dotnet version\n      - name: Display dotnet version\n        run: dotnet --version\n```\n\n### Usar uma versão específica do .NET\n\nVocê pode configurar seu trabalho para usar uma versão específica do .NET, como `6.0.22`. Como alternativa, você pode usar a sintaxe da versão semântica para obter a última versão secundária. Este exemplo usa a versão mais recente do .NET 6.\n\n```yaml\n    - name: Setup .NET 6.x\n      uses: actions/setup-dotnet@v4\n      with:\n        # Semantic version range syntax or exact version of a dotnet version\n        dotnet-version: '6.x'\n```\n\n## Instalar dependências\n\nOs executores hospedados do GitHub têm o gerenciador de pacotes NuGet instalado. Você pode usar o dotnet CLI para instalar dependências do registro do pacote NuGet antes de criar e testar seu código. Por exemplo, o YAML abaixo instala o pacote `Newtonsoft`.\n\n```yaml\nsteps:\n- uses: actions/checkout@v6\n- name: Setup dotnet\n  uses: actions/setup-dotnet@v4\n  with:\n    dotnet-version: '6.0.x'\n- name: Install dependencies\n  run: dotnet add package Newtonsoft.Json --version 12.0.1\n```\n\n### Memorizar dependências\n\nVocê pode armazenar em cache dependências do NuGet para fluxos de trabalho futuros usando a entrada opcional `cache`. Por exemplo, o YAML abaixo armazena em cache a pasta NuGet `global-packages` e, em seguida, instala o pacote `Newtonsoft`. Uma segunda entrada opcional, `cache-dependency-path`, pode ser usada para especificar o caminho para um arquivo de dependência: `packages.lock.json`.\n\nPara saber mais, confira [Referência do cache de dependência](/pt/actions/reference/workflows-and-actions/dependency-caching).\n\n```yaml\nsteps:\n- uses: actions/checkout@v6\n- name: Setup dotnet\n  uses: actions/setup-dotnet@v4\n  with:\n    dotnet-version: '6.x'\n    cache: true\n- name: Install dependencies\n  run: dotnet add package Newtonsoft.Json --version 12.0.1\n```\n\n> \\[!NOTE]\n> Dependendo do número de dependências, pode ser mais rápido usar o cache de dependências. \"Os desenvolvedores de projetos com muitas dependências grandes poderão observar um aumento no desempenho, pois isso reduz o tempo necessário para fazer o download.\" Os projetos com menos dependências podem não ver um aumento significativo no desempenho e até mesmo ver um ligeiro diminuir devido à forma como o NuGet instala dependências armazenadas em cache. O desempenho varia de projeto para projeto.\n\n## Criar e testar seu código\n\nVocê pode usar os mesmos comandos usados localmente para criar e testar seu código. Este exemplo demonstra como usar `dotnet build` e `dotnet test` em um trabalho:\n\n```yaml\nsteps:\n- uses: actions/checkout@v6\n- name: Setup dotnet\n  uses: actions/setup-dotnet@v4\n  with:\n    dotnet-version: '6.0.x'\n- name: Install dependencies\n  run: dotnet restore\n- name: Build\n  run: dotnet build --no-restore\n- name: Test with the dotnet CLI\n  run: dotnet test --no-build\n```\n\n## Empacotar dados do fluxo de trabalho como artefatos\n\nApós a conclusão de um fluxo de trabalho, você poderá fazer o upload dos artefatos resultantes para análise. Por exemplo, é possível que você precise salvar os arquivos de registro, os despejos de núcleo, os resultados de teste ou capturas de tela. O exemplo a seguir demonstra como você pode usar a ação `upload-artifact` para carregar os resultados do teste.\n\nPara saber mais, confira [Armazenar e compartilhar dados com artefatos de fluxo de trabalho](/pt/actions/tutorials/store-and-share-data).\n\n```yaml\nname: dotnet package\n\non: [push]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        dotnet-version: [ '3.1.x', '6.0.x' ]\n\n      steps:\n        - uses: actions/checkout@v6\n        - name: Setup dotnet\n          uses: actions/setup-dotnet@v4\n          with:\n            dotnet-version: ${{ matrix.dotnet-version }}\n        - name: Install dependencies\n          run: dotnet restore\n        - name: Test with dotnet\n          run: dotnet test --no-restore --logger trx --results-directory \"TestResults-${{ matrix.dotnet-version }}\"\n        - name: Upload dotnet test results\n          uses: actions/upload-artifact@v4\n          with:\n            name: dotnet-results-${{ matrix.dotnet-version }}\n            path: TestResults-${{ matrix.dotnet-version }}\n          # Use always() to always run this step to publish test results when there are test failures\n          if: ${{ always() }}\n```\n\n## Publicar nos registros do pacote\n\nÉ possível configurar o seu fluxo de trabalho para publicar o pacote .NET em um registro de pacotes quando os testes de CI são aprovados. Você pode usar segredos do repositório para armazenar quaisquer tokens ou credenciais necessárias para publicar seu binário. O exemplo a seguir cria e publica um pacote para GitHub Packages usando `dotnet core cli`.\n\n```yaml\nname: Upload dotnet package\n\non:\n  release:\n    types: [created]\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    permissions:\n      packages: write\n      contents: read\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-dotnet@v4\n        with:\n          dotnet-version: '6.0.x' # SDK Version to use.\n          source-url: https://nuget.pkg.github.com/<owner>/index.json\n        env:\n          NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}\n      - run: dotnet build --configuration Release <my project>\n      - name: Create the package\n        run: dotnet pack --configuration Release <my project>\n      - name: Publish the package to GPR\n        run: dotnet nuget push <my project>/bin/Release/*.nupkg\n```"}