Целью проект является интеграцию с Nemerle с Microsoft VS. В данное время поддерживается VS 2008 и Nemerle Studio (бесплатная версия основанная на VS Shell). Предыдущие версии были рассчитаны на VS 2005, но нами было принято решение отказаться от ее поддержки. В будущем будут поддерживаться следующие версии VS (VS 2010).
На данный момент реализованы следующие возможности:
Автодополнение при вводе. +
Отображение подсказок при наведении курсора мыши на идентификатор. +
Полноценная подсветка синтаксиса (с учетом макросов и типов, импортируемых в конкретный файл). +
Подсказки к параметрам функций. +
Навигация по коду (переход к определению, поиск вхождений, комбобоксы навигации по коду открытого файла). +
Простые сниппеты (шаблоны кода). +
Использование макросов из сборок подключенных к тому же решению (Solution). Вы можете объединить проект содержащий макросы и проекты использующие эти макросы в одно решение. При этом макросы будут работать во время разработки и их поведение будет обновляться сразу после перекомпиляции сборки с макросами. +
Работоспособность комбобоксов в файлов не подключенных к проектам открытым в IDE. +
Отладка. Поддерживаются базовые возможности отладки: просмотр содержимого переменных и выражений (к сожалению, пока только в формате C#), точки останова, пошаговое исполнение. Из проблем можно отметить не всегда корректное отображение значений переменных при скрытии переменных переменными с аналогичными именами.+/-
Поддержка визуального проектирования для Web-проектов. +/-
Поддержка WPF. +/-
+ – Реализовано. Работает в большинстве случаев.
+/- – Реализовано частично или частенько не работает корректно.
В последствии, возможно будет реализованы:
Поиск по семантическим конструкциям.
Поддержка автоматических сниппетов генерируемых в runtime-е для импортированных макросов.
Поддержка SVN.
Полноценная отладка.
Дополнительные виды рефакторинга.
Intellisense и рефакторинг в коде макросов. Сейчас можно обойти их отсутствие размещая код макроса в обычном модуле и помещая в код макроса вызов метода из этого модуля.
Intellisense и рефакторинг в атрибутоах.
Другие прелести, которые я забыл перечислить.
Лицензия
Свободная (в стиле BSD). Вы можете использовать как сам компилятор и интеграцию, так и любой код из этого проекта. При этом вы всего лишь должны упоминать авторов в about-ах, readme и т.п. своих продуктов, а так же изменяя код оставлять все копирайты и ссылаться на них.
Как загрузить и собрать проект
Внимательно прочитайте инструкцию до конца!
Для сборки проекта на сегодня требуется:
Иметь установленный клиент SVN (такой как TortoiseSVN).*
Иметь установленным .NET 3.5 и VS 2008 с SP1 и с установленными модулями для C#.*
Скачать и установить VS SDK версии 1.1. Это можно сделать здесь. Внимание! Без установки VS SDK или установив не подходящую версию вы не сможете скомпилировать проект интеграции (но сможете собрать сам компилятор).
Если вы пользуетесь файловыми менеджерами, консольными окнами или другими программами позволяющими запускать процессы, то перезапустите их после установки указанных выше компонентов. Иначе у вас могут возникнуть проблемы с компиляцией вследствие того, что изменение в окружении не будет видно в этих приложениях (сессиях).
Загрузить или обновить последнюю версию исходников компилятора Nemerle из SVN. Если вы входите в commiters (т.е. группу разработчиков Nemerle), то следует воспользоваться следующей ссылкой https://nemerle.googlecode.com/svn/nemerle/trunk/ (начинается с https!). Если вы не входите в список разработчиков, то вы можете получить код доступный только на чтение по ссылке http://nemerle.googlecode.com/svn/nemerle/trunk/ (начинается с http!). Обратите внимание на то, что это не просто http-ссылка, но и SVN-ссыка! Для упрощения работы с SVN лучше всего использовать TortoiseSVN (этот плагин встраивается в Windows Explorer + Total Commander и позволяет управлять работой с SVN по средствам контекстного меню). Если компиляция проекта не просходит, то прежде чем писать в форум попробуйте обновить и перекомпилровать исходники как комилятора, так и интеграции. Для этого проще всего удалить все содержимое основной директории за исключением скрытой папки .svn или _svn (зависит от настроек TortoiseSVN) и выбрать пункт «SVN Update». Подробнее смотри Hacking. *
Если вы устанавливали бинарные файлы Nemerle версии 0.9.3.x с помощью инсталлятора с сайта http://nemerle.org, то нужно удалить переменную среды окружения с именем «Nemerle» или убрать из нее кавычки (это ошибка была в инсталляторе версии 0.9.3) и прописать туда путь в который будут класться актуальные версии компилятора (лучше просто удалить эту переменную). Внимание! Работать с проектом можно только на последней версии компилятора скомпилированной самостоятельно из исходников полученных из SVN. Беря из SVN новые файлы Интеграции вы обязательноо должны обновить и исходники компилятора. Причем после обновления исходников вам нужно закрыть все программы которые могут блокировать исполнимые файлы компилятора (особенно VS), перекомпилировать и перерегистрировать файлы компилятора.
Скомпилировать бинарники компилятора Nemerle. Это можно сделать запустив файл DevBuildQuick.cmd, DevBuild2Stage.cmd, DevBuild2StageWithTests.cmd или DevBuildForCommit.cmd. Эти командные файлы производят компиляцию и регистрацию сборок компилятора и Интеграции. Их описание см. ниже.
Сборка проекта под Windows Vista и Windows 7
Указанные выше ОС используют новую подсистему UAC. Так же в этих ОС ограничены права на запись в некоторые каталоги и ветки реестра которые были доступны в прошлых версиях ОС Windows.
Регистрация компонентов компилятора и интеграции с VS в этих ОС требует наличия прав администратора. Более того, даже если вы обладаете правами администратора подсистема UAC по-умолчанию будет препятствовать копированию компонентов в нужные каталоги и их регистрации. Чтобы избежать этого вам требуется запускать сборку проектов из процесса обладающего правами администратора. Самый простой способ добиться этого – воспользоваться наследованием прав процессов. Если вы используете файловый менеджер (такой как Total Commander или FAR), то проще всего будет запустить его копию с правами администратора. Это можно сделать или выбрав пункт «Run as admonistrator» из контекстного меню шортката, или настроив свойства шортката (лучше всего создать специальную копию шортката).
Учтите, что шоткатов на cmd-файлы не позволяют настроить запуск этого файла из под администратора! Но вы сможете вручную запускать их, выбирая соответствующий пункт контекстного меню.
Если вы проделали данные шаги, но интеграция или компилятор не скомпилировались, или не работают, то прежде чем писать вопросы в форумы еще раз ВНИМАТЕЛЬНО прочтите перечисленные выше пункты. Они почти наверняка включают ответ на вопрос «почему у меня не работает...».
Использование
Если вам нужно запустить интеграцию без отладки (просто для работы или тестирования), создайте шортка (.lnk-файл) содержащий следующую командную строку: «%VS90COMNTOOLS%..\..\Common7\IDE\devenv.exe /ranu /rootsuffix Exp» и запускайте VS с интеграцией с помощью этого шортката (путь к VS можно прописать напрямую).
Запуск под отладкой
Если вы хотите запускать Интеграцию под отладкой (для отладки интеграции или макросов), сделать активным (отлаживаемым) проектом проект Nemerle.VisualStudio.
Пропишите в свойствах проекта Nemerle.VisualStudio, на закладке Debug, в поле «Start external program:» путь к VS - «%VS90COMNTOOLS%..\..\Common7\IDE\devenv.exe». (Примечание: путь должен быть полным! Но вы можете попытаться внести строчку «$(VS90COMNTOOLS)..\..\Common7\IDE\devenv.exe» непосредственно в файл «Nemerle.VsIntegration\Nemerle.VsIntegration.csproj.user»*). И в поле «Command line arguments:» значение «/ranu /rootsuffix Exp».
Запустить Nemerle.VSIP.sln на выполнение.
Если вы все сделали правильно, то должна открыться экспериментальная версия VS 2008, в которой можно будет создать и протестировать Nemerle-проект (*.nproj-файлы).
Если при запуске в экспериментальной версии VS 2008 и у вас возникли проблемы, то прежде чем писать об этом в форум или багтрекер прочтите раздел Q&A и еще раз прочитайте данное руководство (от начала, до конца и очень внимательно).
Сборка компилятора из исходников с помощью MSBuild
Для сборки компилятора из исходников с помощью MSBuild можно воспользоваться пакетными файлами лежащими в корневом каталоге проекта компилятора на SVN. Вот их описание:
DevBuildQuick.cmd – Сборка проекты (компилятора, интеграции с VS, Linq, тесты и т.п.) в один проход. Это самый быстрый способ компиляции. Используйте его, если хотите получить свежую версию компилятора и интеграции с доступной отладочной информацией. Учтите, что этот способ сборки не позволяет выявить некоторые проблемы в стандартных макросах и коде компилятора, и может породить бинарники компилятора которые будут не в состоянии собрать себя из своих же исходников. Никогда не коммитьте содержимое каталога boot собранное этим пакетным файлом!
DevBuild2Stage.cmd – Собирает проекты в два прохода. Это с одной стороны гарантирует, что компилятор собирается сам на себе, а с другой, позволяет компилировать код в случаях изменений во внутренних макросах компилятора. Используйте его для быстрой проверки работоспособности компилятора после его изменения или изменения в стандартных макросах.
DevBuild2StageWithTests.cmd – Тоже самое что и предыдущий пункт, но кроме двухпроходной сборки проектов так же производится прогон тестов компилятора.
DevBuildForCommit.cmd – Самый долгий, но в то же время и самый надежный способ сборки компилятора. При этом производится многостадийная (на сегодня 4 стадии) сборка проектов и получившиеся бинарные файлы сравниваются с аналогичными файлами полученными на других стадиях (что гарантирует отсутствие фантомных проблем), прогоняются все тесы (не только компилятора, а например, тесты Linq) и делается ряд других проверок. Данный способ сборки следует применять перед комитом изменений в SVN.
BuildInstallerFast.cmd – собирает все проекты в один проход и создает инсталлятор на основе полученных выходных файлов. Данный способ требует наличия на машине установленного Wix, а так же ряда внешних файлов (ищите описание в русскоязычном форуме на RSDN).
BuildInstallerFull.cmd – делает тоже самое что и предыдущий файл, но при этом происходит много проходная компиляция и прогон всех тестов (аналогично DevBuildForCommit.cmd).
Reg-boot.cmd – ускоряет перекомпиляцию исходников компилятора. Этот файл нужно запускаеть если вы скачали новые boot-файлы компилятора или провели двухстадийную компиляцию.
Reg-bins-2.cmd – пекомилируе и регистрирует бинарные файлы находящиеся в %ProgramFiles%\Nemerle. Это может потребоваться если данная процедура не выполнилась в процессе инсталляции или сборки одним из вышеописанных батников (это является ошибкой – не штатной ситуацией). Выполните этот файл если чувствуете, что компиляция даже мелких проектов занимает слишком много времени (более 2 секунд).
Сборка проектов компилятора с использованием GNU make
Это способ, который используют сами разработчики компилятора. К сожалению, при этом вам придется установить на свой рабочий компьютер Cygwin. Подробности смотрите на nemerle.org.
Возможные проблемы
Выявление проблем и их устранение
Чаще всего возникают следующие проблемы при установке необходимых зависимостей и сборке проектов:
Устанавливается несоответствующие версии VS и VS SDK. Обратите внимание, что VS 2008 соответствует VS SDK 1.0, а VS 2008 SP1 VS SDK 1.1. Кроме того следует четко понимать, что .NET SDK и VS SDK – это разные вещи. .NET SDK в урезанном режиме поставляется с VS 2008, так что отдельно его ставить нет необходимости.
При установке VS не устанавливаются пакеты поддержки C# (крайне редко). Кроме того для сборки интеграции нельзя использовать Express-версии VS.
Сборка проектов происходит непосредственно после установки VS 2008 или VS SDK из приложений третьих фирм (например, файловых менеджеров вроде Total Commander или FAR). Эти приложения запоминают окружение. Это приводит к тому, что новые переменные окружения не видны в старых сессиях. Перезапустите эти приложения прежде чем начинать компиляцию из них!
Обновлена только часть исходников. Помните, что собрать работающую «интеграцию» можно только с соответствующей версией компилятора!
Заблокированы файлы. Если вы попытаетесь перекомпилировать бинарники Nemerle при открытой VS в которой хоть раз производилась компиляция предшествующей версией компилятора, то вы получите сообщения об ошибках или (что намного хуже) на стадии регистрации вы увидите море мелькающего текста. Просто закройте студию и повторите компиляцию.
Недостаток прав. См. предупреждение «Сборка проекта под Windows Vista и Windows 7» (выше).
Все скомпилировалось, но при запуске появляются какие-то ошибки. Проверьте, что в выводе компилятора и утилит не присутствует сообщений об ошибках.
Как включиться в процесс разработки интеграции с VS 2008 и компилятора Nemerle?
Вы должны иметь google-account или почту на http://gmail.com (вроде бы она автоматически является google-account-ом).
Так же вам потребуется получить пароль для SVN. Его можно сгенерировать (или посмотреть если он уже сгенерирован) выбрав ссылку googlecode.com password на странице http://code.google.com/p/nemerle/source/checkout. Для того чтобы увидеть эту ссылку вы должны войти (Sign in) в google-account.
Если у вас есть google-account, то вы можете попросить любого из владельцев (Owner) проекта добавить вас в список commiter-ов. Здесь находится список владельцев проекта можно. Например, вы можете отправить просьбу о добавлении вас в список commiter-ов на vc@rsdn.ru.
Нужно понимать, что это очень ответственное дело и что от ваших исправлений зависит работоспособность проекта. Так что нужно быть очень аккуратным, внимательным. Вносимые изменения должны быть четко обоснованными и разумными. Если в чем-то сомневаетесь, то лучше сначала спросите в конференции Nemerle или на форуме http://rsdn.ru/Forum/?group=prj.nemerle.
Исправляя чужой код старайтесь придерживаться стиля кодирования принятого в данном исходнике и проекте.
Старайтесь своими действиями не раздражать окружающих.
По началу, до получения личного логина в SVN-репозитории Nemerle можно (и даже желательно) присылать патчи (созданные средствами SVN, см. контекстное меню в TortoiseSVN) с исправлениями тем, кто в проекте уже давно (из RSDN-неров это я и IT) или посылайте патчи как аттачи к сообщениям в конференции по Nemerle. Помните, что аттач не должен быть больше 100 кб.
Более свежую информацию «о связи с сообществом Nemerle» можно найти здесь.
Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы
то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских
прав.