Вопрос

Фон: Я хочу создать пользовательский компилятор 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".

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

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