Xamarin.Forms 中的 Source Link

Xamarin.Forms NuGet 包包括 Source Link 映射。 源链接会将 NuGet 包中包含的已编译库映射到源代码存储库。 Visual Studio 将在调试期间下载源代码文件,并允许开发人员逐步执行代码,从而无需从源代码构建即可调试包。

有关使用 Source Link 的详细信息,请参阅 Source Link 文档

警告

Visual Studio 2019 支持 .NET 调试程序的 Source Link,但当前不支持 Mono 调试程序的 Source Link。 因此,可以使用 Source Link 来调试 UWP 应用,但不能调试 Android 或 iOS 应用。 调试 UWP 应用时,必须确保将要调试的库的 PDB 文件复制到编译应用的 bin 目录中的 AppX 文件夹。

使用源链接需要为外部代码启用调试,否则调试程序将跳过对当前解决方案中未包含的代码的调用。 在 Visual Studio 2019 中,此功能位于“调试”部分的“选项”菜单下:

Enable Source Link in Visual Studio 2019

确保已禁用“仅启用我的代码”且已启用“启用 Source Link 支持”。

使用源链接需要为外部代码启用调试,否则调试程序将跳过对当前解决方案中未包含的代码的调用。 此选项位于调试程序部分的“首选项”窗口中:

Enable Source Link in Visual Studio for Mac

确保启用了“单步执行外部代码”。

启用了调试外部包后,Visual Studio 将使用 NuGet 包中包含的 Source Link 映射来下载并单步执行外部源代码。 可以通过在调用 Xamarin.Forms 提供的方法时设置断点来测试这一项:

Breakpoint set on Xamarin.Forms method

Visual Studio 会向你发出警告,表示正在下载源文件,具体取决于你在调试器选项中指定的设置:

Visual Studio external code warning

允许 Visual Studio 下载文件后,调试程序将单步执行外部代码。

Source Link 使用缓存提高性能。 系统会在“符号”部分的“调试”下的“选项”菜单中定义源链接的缓存目录:

Visual Studio Source Link caching

你可通过此菜单指定所有调试符号的缓存目录,以及在遇到缓存符号问题时清除缓存。

Source Link 使用缓存提高性能。 MacOS 上的 Source Link 的缓存目录为 /Users/<username>/Library/Caches/VisualStudio/8.0/Symbols。 此文件夹包含存储用于下载源文件的存储库的子文件夹。 如果 NuGet 包的备用存储库已发生更改,你可能需要手动删除这些文件夹以刷新缓存。