Может ли плагин VS внедрить код в процесс компиляции?

StackOverflow https://stackoverflow.com/questions/928063

Вопрос

Я как бы концептуально разрабатываю плагин, который мне бы хотелось иметь здесь.Что бы я хотел, так это иметь возможность помечать строку в моем коде (что-то вроде того, как добавляются точки останова), а затем получать журнал трассировки, когда выполнение выполняется через них.Вместо того, чтобы устанавливать точки останова (потому что они не работают вне отладчика), я бы предпочел, чтобы внутри компилятора было добавлено дополнительное ведение журнала для AST.

Главным моментом было бы сравнить различные запуски программы;он вылетает, если я делаю A, но не если я делаю B, и большая часть кода должна быть одинаковой, так где же он расходится?

Прямо сейчас я делаю это с помощью file IO и инструмента diff;это работает, но немного неуклюже.

Я думаю, вопрос в том,: Можно ли это сделать и было ли сделано что-то подобное?

Нет правильного решения

Другие советы

Я не знаю ничего, что в точности соответствовало бы вашему описанию.Однако...

Для использования только для отладки Visual Studio 2010 имеет "точки трассировки".Они добавляются таким же образом, как точки останова, но вместо остановки программы они выводят некоторый текст в отладочный вывод.Поскольку они задаются в отладчике, они вообще не влияют на ваш исходный код.

Если вы хотите отслеживать активность в сборке выпуска, то просто добавьте вызовы System.Diagnostic.Trace.WriteLine() в свой код.Ими можно управлять с помощью TraceSwitches, поэтому по умолчанию они могут быть отключены и включены только в том случае, если вам нужна дополнительная информация для диагностики проблемы.В отличие от Debug.Вызовы WriteLine() включены (по умолчанию) как в сборки release, так и в сборки debug.Обратите внимание, что эти вызовы трассировки требуют небольших накладных расходов, даже если traceswitch отключен, поэтому избегайте их использования в областях, критичных к производительности вашего кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top