У меня есть пакет nuget, который я создал и установил в другом решении, но теперь мне нужно отладить код пакета при вызове из моего нового решения.
Я попытался ссылаться на решение пакета, но не работает.
Я использую Visual Studio 2013.
У меня есть пакет nuget, который я создал и установил в другом решении, но теперь мне нужно отладить код пакета при вызове из моего нового решения.
Я попытался ссылаться на решение пакета, но не работает.
Я использую Visual Studio 2013.
Для отладки любой DLL вам нужен файл символа (.pdb). Если вы создадите проект в конфигурации debug
, вы увидите, что эти файлы сгенерированы и помещены в папку вывода сборки.
Visual studio загружает эти файлы символов из разных мест, как описано здесь. Но простой способ отладки ваших пакетов nuget заключается в том, чтобы поместить файлы .pdb из пакетов в выходную папку сборки проекта, который вы хотите отлаживать.
Если код, который вы пытаетесь отладить, классифицируется как не-пользовательский код, вам нужно снять отметку Just My Code
в параметрах отладки.
Пользовательский и не пользовательский код
Чтобы отличить код пользователя от не-пользовательского кода, Just My Code ищет файлы с символами (.pdb) и оптимизацию программ. Отладчик считает код не-пользовательским кодом, когда бинарный файл оптимизирован или когда файл .pdb недоступен.
Три атрибута также влияют на то, что отладчик считает Моим кодом:
Все остальные коды считаются кодом пользователя.
Как отлаживать код в созданном мной пакете nuget
Так же, как NtFreX ответил: "Для отладки любой DLL вам нужен файл символов этого файла (.pdb).". Таким образом, вы можете создавать символьные пакеты, которые позволяют потребителям входить в код вашего пакета в отладчике Visual Studio.
То, как мы это делаем (и работает):
Для получения подробной информации, вы можете обратиться к Создание пакетов символов.
Если эти пакеты не подходят для публикации в галерее NuGet/SymbolSource, вы можете поместить файлы *.nupkg и *.symbols.nupkg на локальный диск.
Примечание. Добавьте исходный код в исходные файлы отладки для решения, которое ссылается на пакет (щелкните правой кнопкой мыши Решение, выберите Свойства... Общие свойства... Отладочные исходные файлы и добавьте корневой исходный каталог для соответствующей двоичной ссылки).
Я получил эту работу, построив проект пакета nuget, созданного в режиме отладки, а затем просто скопировав pdb и dll из каталога отладки в расположение библиотеки Nuget внутри проекта, в котором я хотел его отладить.
например, копия из
ExternalNugetPackage\Bin\Debug\
в
ProjectDirectory\Packages\ExternalNugetPackage.1.0.0\Lib\NET4.5
Для Visual Studio 2017 и исходного кода пакета nuget, размещенного на GitHub или BitBucket:
1) Включите полную отладочную информацию в файле *.csproj:
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
или щелкните правой кнопкой мыши по свойствам проекта, сборке, расширенным настройкам, выводите отладочную информацию - установите на полную.
2) Чтобы включить автоматическую загрузку исходного кода и пошаговое выполнение для вашего dll-пакета nuget, добавьте пакет SourceLink.Create.CommandLine
в свой проект или добавьте его вручную в файл *.csproj:
<ItemGroup>
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.2" PrivateAssets="All" />
</ItemGroup>
Больше информации здесь
3) В инструментах - параметры - отладка, отключите "Включить только мой код" и включите "Подавить оптимизацию JIT при загрузке модуля (только для управляемого)".
После этого вы сможете перейти в методы из вашего dll-пакета nuget.
Это лучшая статья, которую я нашел: https://capgemini.github.io/development/debugging-into-a-nuget-package/