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:
- github.com und GitHub Enterprise
- Azure Repos (ehemals Visual Studio Team Services)
- Azure DevOps Server (ehemals Team Foundation Server)
- GitLab
- Bitbucket