Habilitar a depuração e o diagnóstico com o Source Link
O Source Link é uma tecnologia que permite experiências de depuração de origem de primeira classe para binários. Com bibliotecas habilitadas para o Source Link, o depurador pode baixar os arquivos de origem subjacentes à medida que você avança, e é possível definir pontos de interrupção/tracepoints como você faria com qualquer outra fonte. Também permite que as ferramentas de análise encontrem facilmente o código-fonte correto ao depurar ambientes de produção, como o Azure.
Para habilitar a experiência do Source Link em seu próprio projeto do .NET, defina algumas propriedades e adicione um PackageReference a um pacote do Source Link:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<!-- Optional: Publish the repository URL in the built .nupkg (in the NuSpec <Repository> element) -->
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<!-- Optional: Embed source files that are not tracked by the source control manager in the PDB -->
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<!-- Optional: Build symbol package (.snupkg) to distribute the PDB containing Source Link -->
<IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
</PropertyGroup>
<ItemGroup>
<!-- This assumes GitHub source control but other repo options are available -->
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All"/>
</ItemGroup>
</Project>
Símbolos de compartilhamento
Depois de habilitar o Source Link no projeto, você precisará garantir que os arquivos de símbolo (PDB) criados durante o processo de compilação estejam disponíveis para o Visual Studio (ou sua ferramenta de análise). Você pode distribuir PDBs junto com seu aplicativo (ou no pacote do NuGet). Como alternativa, você pode inserir o arquivo de símbolo no aplicativo ou assembly com a configuração de projeto a seguir.
<DebugType>embedded</DebugType>
Se o aplicativo for distribuído como uma biblioteca por meio de um pacote publicado no NuGet.org, é recomendável criar um pacote de símbolos e publicá-lo no NuGet.org também. Os símbolos disponíveis no servidor de símbolos NuGet.org permitem que o depurador baixe-o quando necessário.
Observação
A inserção de símbolos nem sempre é recomendada para pacotes do NuGet porque aumenta o tamanho e, portanto, o tempo de restauração para projetos que consomem seu pacote.
Provedores alternativos do controle do código-fonte
Os pacotes do Source Link estão disponíveis para vários provedores de controle do código-fonte:
- github.com e GitHub Enterprise
- Azure Repos (antigo Visual Studio Team Services)
- Azure DevOps Server (antigo Team Foundation Server)
- GitLab
- Bitbucket