Debugging und Diagnose mit Source Link

Source Link ist eine Technologie, die ein leistungsstarkes Debuggen für Binärdateien ermöglicht. Mit Source Link-kompatiblen Bibliotheken kann der Debugger die zugrunde liegenden Quelldateien herunterladen, während Sie den Code in Einzelschritten durchlaufen. Sie können Breakpoints und Ablaufverfolgungspunkte wie bei jeder anderen Quelle setzen. Außerdem können Analysetools den richtigen Quellcode beim Debuggen von Produktionsumgebungen wie Azure problemlos ermitteln.

Sie können Source Link in Ihrem eigenen .NET-Projekt nutzen, indem Sie einige Eigenschaften festlegen und einen Verweis auf ein Source Link-Paket hinzufügen:

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

Freigeben von Symbolen

Nachdem Sie den Source Link in Ihrem Projekt aktiviert haben, müssen Sie sicherstellen, dass die während des Buildvorgangs erstellten Symboldateien (PDB) für Visual Studio (oder Ihr Analysetool) verfügbar sind. Sie können PDB-Dateien zusammen mit Ihrer Anwendung (oder im NuGet-Paket) verteilen. Alternativ können Sie die Symboldatei mit der folgenden Projekteinstellung in die Anwendung oder Assembly einbetten.

<DebugType>embedded</DebugType>

Wenn Ihre Anwendung als Bibliothekspaket auf NuGet.org verteilt wird, empfiehlt es sich, ein Symbolpaket zu erstellen und dieses auch auf NuGet.org zu veröffentlichen. Auf dem NuGet.org-Symbolserver verfügbare Symbole können bei Bedarf vom Debugger heruntergeladen werden.

Hinweis

Das Einbetten von Symbolen wird für NuGet-Pakete nicht uneingeschränkt empfohlen, da es die Paketgröße und dadurch die Wiederherstellungszeit für Projekte erhöht, die Ihr Paket nutzen.

Alternative Quellcodeverwaltungsanbieter

Source Link-Pakete sind für mehrere Quellcodeverwaltungsanbieter verfügbar: