Подтвердить что ты не робот

Интеграция пользовательского компилятора с Visual Studio IDE

Фон. Я хочу создать собственный компилятор VB, расширяющий "оригинальный" компилятор для обработки моих пользовательских атрибутов времени компиляции.

Вопрос: после того, как я создал свой собственный компилятор, и у меня есть исполняемый файл, способный компилировать код VB через стандартный интерфейс командной строки, как мне интегрировать этот компилятор с Visual Студия IDE? (так что нажатие "compile" или "build" будет использовать мой компилятор вместо компилятора по умолчанию).

EDIT: (исправьте меня, если я ошибаюсь)

Из приведенных здесь реакций я вижу, что этот вопрос немного шокирует, поэтому я буду объяснять свои потребности и предпосылки: .NET предоставляет нам отличный механизм под названием "Атрибуты". Насколько я понимаю, при создании атрибутов применяется их предполагаемое поведение по атрибутированному элементу (сборке, модулю, классу, методу и т.д.) - атрибуты должны отражаться. Таким образом, реальный трюк здесь отражает и применяет поведение в нужном месте.

Давайте возьмем Сериализацию, например: Мы украшаем класс атрибутом Serializable. Затем мы передаем экземпляр класса методу Serialize formatter. Форматтер отражает экземпляр, проверяя, имеет ли он атрибут Serializable и действует соответственно.

Теперь, если мы рассмотрим атрибуты Synchronization, Flags, Obsolete и CLSCompliant, тогда возникает реальный вопрос: кто их отражает? По крайней мере, в некоторых случаях это должен быть компилятор (и/или IDE). Поэтому представляется, что если я хочу создавать пользовательские атрибуты, которые изменяют поведение элемента независимо от какого-либо конкретного потребителя, я должен расширить компилятор, чтобы отразить их при компиляции.

Конечно, это не мои личные мысли: книга " Applied.NET Attributes" представляет собой полный пример создания настраиваемого атрибута и пользовательский компилятор С#, чтобы отразить этот атрибут при компиляции (пример используется для реализации "проверенных исключений в стиле Java" ).

4b9b3361

Ответ 1

Ознакомьтесь с "Обзор MSBuild" на http://msdn.microsoft.com/en-us/library/ms171452.aspx. Проекты Visual Studio - это проекты MSBuild. Я считаю, что все, что вам нужно сделать, это сделать несколько незначительных изменений. Я не делал этого для компилятора, но я сделал это с ILMerge после компиляции, и он отлично работает. Бесшовные и даже возможно отлаживать объединенные сборки.

Ответ 2

Отметьте "Свойство BuildAction" и "Свойство CustomTool" в http://msdn.microsoft.com/en-us/library/0c6xyb66(VS.80).aspx

Несколько лет назад я прочитал отличную статью о создании пользовательского компилятора, регистрации и настройке этих свойств. Я не могу найти статью сейчас, но это должно помочь вам начать.