Антон Яшин @Fynjy007
Программист
Information
- Rating
- Does not participate
- Location
- Ульяновск, Ульяновская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Software Developer, Mobile Application Developer
Middle
From 125,000 ₽
Git
Linux
OOP
C#
.NET
.NET Core
Visual Studio
Code Optimization
Multiple thread
SQL
Хм. Не задумывался над этим… Посмотрел у себя, действительно оно показывает зависимости генератора как анализаторы в netstandard 2.0 библиотеке. Однако для uwp, ios и андроид нет. Возможно технология сыровата и разработчики студии не сделали её корректную поддержку в студии.
Возможно мой подход подходит мне, а не, например, вам. Тот код, который у меня получается в генераторе, отладки не требует, а требует синтаксической проверки на отсутствие ошибок сборки и на корректность генерации (генератор и компилятор отработали успешно но сгенерировалось что-то не то). Как-то не было надобности ставить бряки внутрь сгенерированного кода, поэтому возможно я несколько неправильно понял, что конкретно имелось в виду.
В любом случае наличие выбора лучше чем его отсутствие. Для кого-то это будет полезно, для кого-то бесполезно, но возможно интересно.
Меньше костыльности. Всё происходит внутри одного экземпляра студии. Если в результате генерации получается сложный код, то его можно и, на мой взгляд нужно, вынести в библиотеку поддержки. В этой библиотеке можно ставить брейкпоинты. Остальное становится более или менее тривиальным.
Про сборку. Важна не сборка, а исходный код, который получается и то как он работает. Исходный код всегда можно добыть по брейкпоинту в точке, где он добавляется в текущую компиляцию, в генераторе. Он детерминирован, если генератор и источник для него не менялись. То же самое для прогона тестов на получившейся сборке. Сборка может каждый раз и меняется, но вот результат нет.
Также можно тестировать юнитами, например параметры, ошибки и предупреждения генератора.
Генератор тоже надо отлаживать, конечно же. Разница тут в том в каком контексте будет выполнятся генератор. В контексте компилятора/студии или в контексте юнит теста. Я предпочитаю второй вариант. На мой взгляд так проще отлаживать генератор.
Если я правильно понял проблему, то чтобы пакет не вылез зависимостью к проекту куда анализатор добавляется, нужно устанавливать
PrivateAssets="all"
. Пример:В вышеприведённом примере LightMock будет добавлен в проект зависимостью, а остальные пакеты нет. То же самое со ссылками на проекты в решении.
Поверхностным поиском не нашёл причины возмущения Дробышевского. Думаю, если было-бы что-то существенное, то он накатал бы статью.
Жду продолжения.