Страницы

Поиск по вопросам

суббота, 22 февраля 2020 г.

Дебаг исходного кода сборок в C# без компиляции сборок в dll

#c_sharp #компиляция


У меня есть несколько компонентов(исходный код библиотеки).

Если скомпилировать все сборки, то получится несколько библиотек dll
Добавив которые в references можно работать с библиотекой.

Как добавить эти сборки в проект, чтобы их не компилировать, а работать с ними как
с исходным кодом и можно было дебажить?

Например:


Library.Assembly1
Library.Assembly2
Library.Assembly3


Все они как разные проекты в студии идут.

После билда получится 3 dll с которыми потом можно работать.

А мне нужно, чтобы эти сборки были в моём проекте и можно было дебажить исходный код.
    


Ответы

Ответ 1



Добавляешь необходимые проекты в одно решение (Solution). Добавляешь ссылки на свои проекты, там где требуется. ПКМ по проекту - добавить ссылку. Теперь можно дебажить свои сборки. Порядок сборки можно изменить в зависимостях проектов.

Ответ 2



Если менять исходный код сборок и компилировать их не требуется, тогда нет необходимости добавлять их проекты в решение. Visual Studio позволяет отлаживать исходный код сборки, если она сможет определить путь к соответствующему PDB файлу этой сборки (он содержит отладочную информацию), а так же путь к исходному коду сборки. Файл PDB создается при компиляции сборки с ключем \debug в той же самой папке, где создается файл сборки (DLL). По умолчанию, компоновщик помещает полный путь и имя связанного PDB-файла в сборку (DLL). При отладке, Visual Studio проверяет, существует ли файл символов в расположении, которое задано в сборке. Но если сборка была скомпилирована не на этом компьютере, то указанного расположения либо не существует, либо PDB файлы находятся не там. В этом случае, путь к PDB файлам можно прописать в настройках (Сервис=>Параметры=>Отладка=>Символы или Tools=>Options=>Debugging=>Symbols). Кроме отладочной информации, PDB файл содержит также сведения о местонахождении исходного кода сборки. Если это местонахождение существует на компьютере, то Visual Studio автоматически открывает соответствующий файл при отладке. Когда отладчик приостанавливает выполнение в месте, для которого отсутствует исходный файл, он отображает страницу Нет исходного кода или Символы не загружены, которая может помочь найти исходный файл. Это сжатый пересказ инструкции описанной в MSDN: Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio. При отладке с помощью PDB файлов, могут возникать трудности с чтением локальных переменных в отладчике. Для избежания этих трудностей, можно сделать две вещи. Отключить главный процесс Visual Studio (Visual Studio Hosting Process). Откройте проект исполняемого файла в Visual Studio. Проекты, которые не создают исполняемые файлы (например, проекты библиотеки классов или службы) не имеют этот параметр. В меню Проект (Project) выберите пункт Свойства (Properties). Перейдите на вкладку Отладка (Debugging). Снимите флажок Разрешить главный процесс Visual Studio (Enable Visual Studio Hosting Process) Подробнее о побочных эффектах связанных с отключением этой опции написано здесь: Практическое руководство. Отключение главного процесса Отключить JIT оптимизацию кода, таким образом избегая несоответствия его источникам, что сильно затрудняет отладку. Это можно сделать при помощи специального ключа в реестре (что влияет на все приложения), но лучше всего запустить Visual Studio из командной строки установив специальную переменную окружения. set COMPLUS_ZapDisable=1 cd /d "%ProgramFiles%\Microsoft Visual Studio 14.0\Common7\ide\" start devenv.exe exit Путь в скрипте выше указывает на Visual Studio 2015. Для другой версии необходимо указать соответствующий номер: VS 2013 - 12.0, VS 2012 - 11.0, VS 2010 - 10.0. Этот трюк позаимствован из блога, в котором он подробно описан: How to disable optimizations when debugging Reference Source.

Комментариев нет:

Отправить комментарий