使用源链接启用调试和诊断

源链接是一种可为二进制文件提供一流源代码调试体验的技术。 借助启用了源链接的库,调试程序可以在你操作时下载底层源文件,并且你可以像处理任何其他源一样设置断点/跟踪点。 这样,你还可以使用分析工具在调试 Azure 等生产环境时轻松查找正确的源代码。

你可以通过设置一些属性并将 PackageReference 添加到源链接包来在自己 .NET 项目中启用源链接体验:

<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>

共享符号

在项目中启用源链接后,需确保在生成过程中创建的符号文件 (PDB) 可在 Visual Studio(或分析工具)中使用。 可以将 PDB 与应用程序(或者 NuGet 包)一起发布。 另外,可以使用以下项目设置将符号文件嵌入应用程序或程序集。

<DebugType>embedded</DebugType>

如果通过发布到 NuGet.org 的包以库的形式分发应用程序,建议生成符号包并发布到 NuGet.org。 调试程序可在需要时下载 NuGet.org 符号服务器上提供的符号。

注意

对于 NuGet 包,并不总是建议使用嵌入符号,因为它会增加大小,从而导致使用包的项目的还原时间增加。

备用源代码管理提供程序

源链接包可用于多个源代码管理提供程序: