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: