Интеграция пользовательского компилятора с IDE Visual Studio
-
26-09-2019 - |
Вопрос
Фон: Я хочу создать пользовательский компилятор VB, расширяя «оригинальный» компилятор, чтобы обработать свои пользовательские атрибуты времени компиляции.
Вопрос: После того, как я создал свой пользовательский компилятор, и у меня есть исполняемый файл, способный компилировать код VB через стандартный интерфейс командной строки, как мне интегрировать этот компилятор с IDE Visual Studio? (Такое, что нажатие «компиляции» или «сборка» будет использовать мой компилятор вместо компилятора по умолчанию).
РЕДАКТИРОВАТЬ: (Поправьте меня если я ошибаюсь)
Из реакций здесь я вижу, что этот вопрос немного шокирует, поэтому я также буду объяснить мои потребности и фона: .NET предоставляет нам отличный механизм, называемый атрибутами. Насколько я понимаю, изготовление атрибутов применим свое предполагаемое поведение на приписанном элементе (сборка, модуль, класс, метод и т. Д.) - Атрибуты должны быть отражены. Таким образом, реальная хитрость здесь отражает и применяет поведение на правильном месте.
Позволяет принять сериализацию, например: мы украсим класс с сериализованным атрибутом. Затем мы передаем экземпляр класса к методу сериализации формата. Формар размышляет по экземпляру, проверяя, имеет ли он сериализуемый атрибут и действую соответственно.
Теперь, если мы исследуем синхронизацию, флаги, устаревшие и CLSCompliant атрибуты, то реальный вопрос: кто их отражает? По крайней мере, в некоторых случаях это должно быть компилятор (и / или IDE). Следовательно, кажется, что если я хочу создать пользовательские атрибуты, которые изменяют поведение элемента независимо от любого конкретного потребителя, я должен продлить компилятор, чтобы отразить их при компиляции.
Конечно, это не мои личные идеи: книга "Прикладные атрибуты .NET«Предоставляет полный пример создания пользовательского атрибута и пользовательский компилятор C #, чтобы отразить этот атрибут при компиляции (пример используется для реализации« проверяемых исключений в стиле Java »).
Решение
Проверьте «Обзор MSBuild» в http://msdn.microsoft.com/en-us/library/ms171452.aspx.. Отказ Проекты Visual Studio - проекты MSBuild. Я считаю, что все, что вам придется сделать, это сделать пару незначительных изменений. Я не сделал это для компилятора, но я сделал это с Ilmerge после компиляции, и он отлично работает. Бесшовные и даже можно отладить объединенные сборки.
Другие советы
Проверить "Свойство постройки" и "Cabstool Property".
Несколько лет назад я прочитал отличную статью о создании пользовательского компилятора, регистрируя его и установив эти свойства. Я не могу найти статью сейчас, но это должно вас начать.