Фон. Я хочу создать собственный компилятор VB, расширяющий "оригинальный" компилятор для обработки моих пользовательских атрибутов времени компиляции.
Вопрос: после того, как я создал свой собственный компилятор, и у меня есть исполняемый файл, способный компилировать код VB через стандартный интерфейс командной строки, как мне интегрировать этот компилятор с Visual Студия IDE? (так что нажатие "compile" или "build" будет использовать мой компилятор вместо компилятора по умолчанию).
EDIT: (исправьте меня, если я ошибаюсь)
Из приведенных здесь реакций я вижу, что этот вопрос немного шокирует, поэтому я буду объяснять свои потребности и предпосылки: .NET предоставляет нам отличный механизм под названием "Атрибуты". Насколько я понимаю, при создании атрибутов применяется их предполагаемое поведение по атрибутированному элементу (сборке, модулю, классу, методу и т.д.) - атрибуты должны отражаться. Таким образом, реальный трюк здесь отражает и применяет поведение в нужном месте.
Давайте возьмем Сериализацию, например: Мы украшаем класс атрибутом Serializable. Затем мы передаем экземпляр класса методу Serialize formatter. Форматтер отражает экземпляр, проверяя, имеет ли он атрибут Serializable и действует соответственно.
Теперь, если мы рассмотрим атрибуты Synchronization, Flags, Obsolete и CLSCompliant, тогда возникает реальный вопрос: кто их отражает? По крайней мере, в некоторых случаях это должен быть компилятор (и/или IDE). Поэтому представляется, что если я хочу создавать пользовательские атрибуты, которые изменяют поведение элемента независимо от какого-либо конкретного потребителя, я должен расширить компилятор, чтобы отразить их при компиляции.
Конечно, это не мои личные мысли: книга " Applied.NET Attributes" представляет собой полный пример создания настраиваемого атрибута и пользовательский компилятор С#, чтобы отразить этот атрибут при компиляции (пример используется для реализации "проверенных исключений в стиле Java" ).