SourceLink позволяет скачивать исходники во время отладки прямо с GitHub или с других серверов контроля версий. Это более простая и гораздо более удобная альтернатива Source серверам, которые хранят pdb файлы.
Больше не нужно:
- думать поставлять или не поставлять pdb в nuget пакете
- пушить pdb на Source сервера
- при отладке искать откуда взять pdb
Самый простой способ подключить SourceLink сразу к нескольким проектам это использовать файл Directory.Build.props:
<Project>
<ItemGroup>
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.0" PrivateAssets="All" />
</ItemGroup>
</Project>Без всякой дополнительной конфигурации SourceLink.Create.CommandLine будет работать с репозиториями из GitHub и BitBucket.
Можно контролировать запуск SourceLink с помощью MsBuild параметра /p:SourceLinkCreate=true
Для работы SourceLink также требуется компилировать pdb в Portable PDB format. Portable PDB format является кросс платформенным, а также имеет гораздо меньший объем чем Windows PDB files.
Кроме того имеется опция встраивания pdb прямо в dll или exe (embedded), что очень удобно для доставки пакетов. Я предпочитаю также поставлять эти настройки в Directory.Build.props:
<Project>
<ItemGroup>
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.0" PrivateAssets="All" />
</ItemGroup>
<PropertyGroup>
<DebugType>embedded</DebugType>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
</Project>- Pdb файлы генерируются в Portable PDB format и внедряются прямо в сборку
- SourceLink подключен к проектам
- Запуск SourceLink регулируется параметром
SourceLinkCreate - SourceLink на этапе компиляции переписывает в pdb файлах локальные пути на пути в GitHub