Сообщений 12    Оценка 0        Оценить  
Система Orphus

Nemerle – интеграция с VS 2008

О проекте
Лицензия
Как загрузить и собрать проект
Загрузка SP и VS SDK
Получение исходников
Использование
Запуск под отладкой
Отладка компилятора или макросов
Сборка компилятора из исходников с помощью MSBuild
Сборка проектов компилятора с использованием GNU make
Возможные проблемы
Выявление проблем и их устранение
Как включиться в процесс разработки интеграции с VS и компилятора Nemerle?
Информация о Nemerle

О проекте

Целью проект является интеграцию с Nemerle с Microsoft VS. В данное время поддерживается VS 2008 и Nemerle Studio (бесплатная версия основанная на VS Shell). Предыдущие версии были рассчитаны на VS 2005, но нами было принято решение отказаться от ее поддержки. В будущем будут поддерживаться следующие версии VS (VS 2010).

На данный момент реализованы следующие возможности:

  1. Автодополнение при вводе. +
  2. Отображение подсказок при наведении курсора мыши на идентификатор. +
  3. Полноценная подсветка синтаксиса (с учетом макросов и типов, импортируемых в конкретный файл). +
  4. Подсказки к параметрам функций. +
  5. Навигация по коду (переход к определению, поиск вхождений, комбобоксы навигации по коду открытого файла). +
  6. Простые сниппеты (шаблоны кода). +
  7. Отладка. Поддерживаются базовые возможности отладки: просмотр содержимого переменных и выражений (к сожалению, пока только в формате C#), точки останова, пошаговое исполнение. Из проблем можно отметить не всегда корректное отображение значений переменных при скрытии переменных переменными с аналогичными именами.+/-
  8. Использование макросов из сборок подключенных к тому же решению (Solution). Вы можете объединить проект содержащий макросы и проекты использующие эти макросы в одно решение. При этом макросы будут работать во время разработки и их поведение будет обновляться сразу после перекомпиляции сборки с макросами. +
  9. Дизайнер WinForms. +
  10. Рефакторинг (доступен рефакторинг переименования). +/-
  11. Поддержка визуального проектирования для Web-проектов. +/-
  12. Поддержка WPF. +/-

+ – Реализовано. Работает в большинстве случаев.

+/- – Реализовано частично или частенько не работает корректно.

В последствии, возможно будет реализованы:

  1. Поиск по семантическим конструкциям.
  2. Поддержка автоматических сниппетов генерируемых в runtime-е для импортированных макросов.
  3. Поддержка SVN.
  4. Полноценная отладка.
  5. Дополнительные виды рефакторинга.
  6. Intellisense и рефакторинг в коде макросов. Сейчас можно обойти их отсутствие размещая код макроса в обычном модуле и помещая в код макроса вызов метода из этого модуля.

Лицензия

Свободная (в стиле BSD). Вы можете использовать как сам компилятор и интеграцию, так и любой код из этого проекта. При этом вы всего лишь должны упоминать авторов в about-ах, readme и т.п. своих продуктов, а так же изменяя код оставлять все копирайты и ссылаться на них.

Как загрузить и собрать проект

Внимательно прочитайте инструкцию до конца!

Для сборки проекта на сегодня требуется:

  1. Иметь установленный клиент GIT (мы рекомендуем использовать Git Extension).*
  2. Иметь установленным VS 2010 (с SP1) и установленным модулем C# для .Net 4.0 или VS 2008 (с SP1) с установленными модулями C# и C++ для .Net 2.0 - 3.5.*
  3. Скачать и установить VS SDK соответствующий версии VS и SP к ней. Подробнее см. раздел «Загрузка SP и VS SDK».
  4. Если вы пользуетесь файловыми менеджерами, консольными окнами или другими программами позволяющими запускать процессы, то перезапустите их. Иначе у вас могут возникнуть проблемы с компиляцией вследствие того, что изменение в окружении не будет видно в этих приложениях (сессиях).
  5. Загрузить или обновить последнюю версию исходников Nemerle с https://github.com/rsdn/nemerle/. Подробнее см. раздел «Получение исходников».
  6. Если у вас были установлены предыдущие версии Nemerle, то необходимо анинсталлироать их перед сборкой компилятора и интеграции из исходников.
  7. Если вы устанавливали бинарные файлы Nemerle версии 0.9.3.x с помощью инсталлятора с сайта http://nemerle.org, то нужно удалить переменную среды окружения с именем «Nemerle». Внимание! Работать с проектом можно только на последней версии компилятора скомпилированной самостоятельно из исходников. Беря из новые файлы Интеграции вы обязательноо должны обновить и исходники компилятора. Причем после обновления исходников вам нужно закрыть все программы которые могут блокировать исполнимые файлы компилятора (особенно VS), перекомпилировать и перерегистрировать файлы компилятора.
  8. Пред тем как приступить к компиляции закройте все копии VS, так как они могут блокировать файлы компилятора и интеграции.
  9. Скомпилировать необходимые вам проекты Nemerle. Для этого можно воспользоваться одни из пакетных (.cmd) файлов находящихся в корне репозитория. Для использования Nemerle для разработки лучше всего подходит файл DevBuildQuick-4.cmd (для .Net 4.0) или DevBuildQuick.cmd (для .Net 3.5). При этом будут собраны следующие проекты: проект компилятора, проект интеграции с VS 2008, проекты, входящие в пакет PowerPack (набор дополнительных библиотек). Подробнее см. раздел «Сборка компилятора из исходников с помощью MSBuild».

Сборка проекта под Windows Vista и более поздние версии Windows

Указанные выше ОС используют новую подсистему UAC. Так же в этих ОС ограничены права на запись в некоторые каталоги и ветки реестра которые были доступны в просшлых версиях ОС Windows.

Регистрация компонентов компилятора и интеграции с VS в этих ОС требует наличия прав администратора. Более того, даже если вы обладаете правами администратора подсистема UAC по-умолчанию будет препятствовать копированию компонентов в нужные каталоги и их регистрации. Чтобы избежать этого вам требуется запускать сборку проектов из процесса обладающего правами администратора. Самый простой способ добиться этого – воспользоваться наследованием прав процессов. Если вы используете файловый менеджер (такой как Total Commander или FAR), то проще всего будет запустить его копию с правами администратора. Это можно сделать или выбрав пункт «Run as admonistrator» из контекстного меню шортката, или настроив свойства шортката (лучше всего создать специальную копию шортката).

Учтите, что шоткаты на cmd-файлы не позволяют настроить запуск этого файла из под администратора! Но вы сможете вручную запускать их, выбирая соответствующий пункт контекстного меню.

Если вы проделали данные шаги, но интеграция или компилятор не скомпилировались, или не работают, то прежде чем писать вопросы в форумы еще раз ВНИМАТЕЛЬНО прочтите перечисленные выше пункты. Они почти наверняка включают ответ на вопрос «почему у меня не работает...».

Загрузка SP и VS SDK

Обратите внимание, что вы не сможете поставить VS SDK не соответствующий SP! Если вы ставите VS с нуля, то имеет смысл ставить версию с интегрированным SP1 (если вы подписчик MSDN, то можете найти ее там). Внимание! Без установки VS SDK или установив не подходящую версию вы не сможете скомпилировать проект интеграции (но сможете собрать сам компилятор). Обратите так же внимание на то, что вы не сможете использовать собранный из исходников компилятор с Интеграцией с VS не собранной из исходников одновременно с компилятором.

Получение исходников

Инструкция по работе с https://github.com и конфигурированию клиента GIT: http://rsdn.ru/forum/nemerle/4336310.1.aspx.

Если вы хотите получить обновляемую копию исходников доступную только на чтение (всего лишь собирать компилятор и интеграцию с VS из исходников и не собираетесь предлагать свои pull reuest-ы (изменения в проект)), то вам достаточно будет сделать локальный клон репозитория. Для этого в консоли git (Ctrl+G в Git Extension) введите «git clone git://github.com/rsdn/nemerle.git» и нажмите Enter. Если вы хотите делать pull reuest-ы, вам необходимо сделать Fork на https://github.com/rsdn/nemerle/ и клонировать локально его. Если вам нужно скомпилировать текущую версию и вы не хотите связываться с установкой GIT-клиента, вы можете загрузить свежую весрию исходников здесь https://github.com/rsdn/nemerle/zipball/master.

Использование

Если вам нужно запустить интеграцию без отладки (просто для работы или тестирования), создайте шортка (.lnk-файл) содержащий следующую командную строку: «%VS100COMNTOOLS%..\..\Common7\IDE\devenv.exe /rootsuffix Exp» и запускайте VS с интеграцией с помощью этого шортката (путь к VS можно прописать напрямую). Для 2008 в командную строку так же нужно добавить ключ «/ranu» и использовать переменную среды «VS90COMNTOOLS».

Для VS 2010 вы можете произвести инсталляцию Интеграции в основную версию VS. Для этого найдите файл Nemerle.VisualStudio.vsix (обычно он после компиляции находится по пути %ProgramFiles%\Nemerle\Net-4.0\Nemerle.VisualStudio.vsix) и запустите его на выполнение. В появившемся окне нужно нажать кнопку «Intall». При этом VS должна быть закрыта. Удалить Интеграцию можно в меню «Tools\Extension Manager…».

Запуск под отладкой

  1. Открыть решение snippets\VS2010\Nemerle.VS2010.sln (для VS 2010) или VsIntegration\Nemerle.VSIP.sln (для VS 2008).
  2. Сделать активным (отлаживаемым) проектом проект Nemerle.VisualStudio. Для этого в контекстном меню проекта выбрать «Set as strtup project».
  3. Прописать в свойствах проекта Nemerle.VisualStudio, на закладке Debug, в поле «Start external program:» путь к VS - «%VS100COMNTOOLS%..\..\Common7\IDE\devenv.exe». (Примечание: путь должен быть полным! Но вы можете внести строчку «$(VS100COMNTOOLS)..\..\Common7\IDE\devenv.exe» непосредственно в файл «*.csproj.user»*). И в поле «Command line arguments:» значение «/rootsuffix Exp». Для 2008 в командную строку так же нужно добавить ключ «/ranu» и использовать переменную среды «VS90COMNTOOLS».
  4. Запустить Nemerle.VS2010.sln или Nemerle.VSIP.sln на выполнение (F5).

Если вы все сделали правильно, то должна открыться экспериментальная версия VS, в которой можно будет создать и протестировать Nemerle-проект (*.nproj-файлы).

Отладка компилятора или макросов

Для отладки компилятора и макросов можно применять одну из двух стратегий:

1. Вставить перед кодом, который нужно отладить инструкцию assert(false) и произвести сборку компилятора или проекта макроса.

2. Создать пустой C#-проект (в принципе язык не важен). В настройках проекта в качестве запускаемого на отладку приложения прописать %ProgramFiles%\Nemerle\Net-4.0\ncc.exe (%ProgramFiles%\Nemerle\Net-3.5\ncc.exe для .Net 3.5). В качестве параметров командной строки прописать «-no-color -from-file:некоторый путь\CompilerOptions.txt».

Файл CompilerOptions.txt может содержать разнообразные настройки компилятор. Например, он может выглядеть так:

-debug-
-out:E:\MyProjects\Tests\VS2010\NccDebug\NccDebug\Test.exe
-greedy-references-
-no-color 
-r:"E:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll"
E:\MyProjects\Tests\VS2010\NccDebug\NccDebug\Main.n

Список доступных команд можно получить введя в консоли «"%ProgramFiles%\Nemerle\ncc.exe" -h».

Файл CompilerOptions.txt и исходные файлы используемые для отладки имеет смысл подключить к данному проекту и установить им свойство Build Action в None.

Имея такой проект остается только поместить код приводящий к проблеме в файл путь к которому указан CompilerOptions.txt, поставить точку останова в нужном месте исходников компилятора или макроса и нажать F5.

ПРИМЕЧАНИЕ

Учтите, что для отладки компилятора нужно чтобы он был собран из исподников (используейте для этого DevBuildQuick.cmd, DevBuildQuick-ncc.cmd или их аналога для .Net 4.0).

Если при запуске в экспериментальной версии VS у вас возникли проблемы, то прежде чем писать об этом в форум или багтрекер прочтите раздел Q&A и еще раз прочитайте данное руководство.

Сборка компилятора из исходников с помощью MSBuild

ПРИМЕЧАНИЕ

Большинство пакетных файлов имеют копию с «-4» в конце имени файла. Эти файлы предназначены для сборки проектов под .Net 4.0. Файлы не имеющие таких префиксов предназначены для сборки проектов под .Net 3.5.

Для сборки компилятора из исходников с помощью MSBuild можно воспользоваться пакетными файлами лежащими в корневом каталоге репозитория Nemerle. Вот их описание:

Перед комитом изменений в основную ветвь (master) репозитория обязательно выполните сборку с помощью DevBuildForCommit-4.cmd и DevBuildForCommit.cmd и совершайте комит, только если компиляция прошла успешно. Не допускайте даже наличие предупреждений (если, конечно они не были до ваших изменений).

Обратите внимание! Необходимо производить проверочную компиляцию как для .Net 4.0, так и для 3.5. Иначе очень легко внести изменения которые приведут к невозможности сборки проекта под одну из версий .Net. А это приведет к остановке сборки ночных сборок.

Не рассчитывайте на то, что при merge-е вашего pull-request-а все ошибки будут проверены. Код pull-request-а должен проходить тесты!

Сборка проектов компилятора с использованием GNU make

На сегодня этот метод (как и любые другие за исключением использования MSBuild) устарели. С его помощью нельзя собрать интеграцию с VS и проекты входящие в PowerPack. Используйте сборку с помощью MSBuild (а еще лучше описанные выше батч-файлы).

Этот способ сборки подходит для сборки под Linux.

Сборка с использованием GNU make - это способ, который используют авторы компилятора. К сожалению, под Windows, при этом, вам придется установить на свой рабочий компьютер Cygwin. Подробности смотрите на nemerle.org.

Возможные проблемы

Выявление проблем и их устранение

Чаще всего возникают следующие проблемы при установке необходимых зависимостей и сборке проектов:

  1. Устанавливается несоответствующие версии VS и VS SDK. Обратите внимание, что VS 2008 соответствует VS SDK 1.0, а VS 2008 SP1 VS SDK 1.1. Кроме того следует четко понимать, что .NET SDK и VS SDK – это разные вещи. .NET SDK в урезанном режиме поставляется с VS 2008, так что отдельно его ставить нет необходимости.
  2. При установке VS не устанавливаются пакеты поддержки C# (крайне редко) и/или C++ (чаще). Оба пакета обязательны для сборки интеграции!
  3. Для сборки интеграции нельзя использовать Express-версии VS.
  4. Сборка проектов происходит непосредственно после установки VS или VS SDK из приложений третьих фирм (например, файловых менеджеров вроде Total Commander или FAR). Эти приложения запоминают окружение. Это приводит к тому, что новые переменные окружения не видны в старых сессиях. Перезапустите эти приложения прежде чем начинать компиляцию из них!
  5. Помните, что собрать работающую «интеграцию» можно только с соответствующей версией компилятора!
  6. Вы пытаетесь скомпилировать только компилятор или только «интеграцию». Опять же помните, что «интеграция» использует компилятор, так что они должны быть одной версии (собраны одновременно). Пересборка компилятора приведет к неработоспособности «интеграции». Компиляция же «интеграции» с несоответствующими версиями компилятора может вовсе не удаться. Если вы собираете решение интеграции из VS, то после перекомпиляции бинарников Nemerle нужно произвести принудительную перекомпиляцию всего проекта интеграции.
  7. Заблокированы файлы. Если вы попытаетесь перекомпилировать бинарники Nemerle при открытой студии в которой хоть раз производилась компиляция предшествующей версией компилятора, то на стадии регистрации вы увидите море мелькающего текста, а количество скопированных файлов будет отличаться от 4, 1, 5. Просто закройте студию и повторите компиляцию.
  8. Недостаток прав. См. предупреждение «Сборка проекта под Windows Vista и Windows 7» (выше).
  9. Все скомпилировалось, но при запуске появляются какие-то ошибки. Проверьте, что в выводе компилятора и утилит не присутствует сообщений об ошибках.
  10. Вы открыли проект компилятора в VS и у вас начались проблемы или проект не компилируется. Проект компилятора не открывается корректно в интеграции. Поэтому даже не пытайтесь этого делать. Проект интеграции с VS 2008 может быть открыт самой интеграции, но при этом будут заблокированы некоторые файлы. Для изменения кода интеграции вы можете использовать решение Nemerle. VSIP.n.sln, но перед сборкой проекта нужно закрыть копию студии, в которой был открыт этот проект, и произвести сборку через батч-файлы или средствами MSBuild. Производить отладку интеграции можно отрыв проект Nemerle.VSIP.sln. Это копия предыдущего решения, но в ней сделан хак позволяющий открывать это решение без использования интеграции Nemerle с VS. При этом проекты входящие в состав решения открываются так как будто это C#-проекты. Это позволяет производить сборку проекта интеграции, отлаживать его и даже редактировать его файлы, но притом не будет доступен интелисенс, подсветка и другие прелести IDE.

Как включиться в процесс разработки интеграции с VS и компилятора Nemerle?

Вы должны иметь account на https://github.com.

У вас должен быть инсталлирован клиент git (мы рекомендуем использовать Git Extension).

Для того чтобы вносить изменения в проек вам необходимо сделать Fork основного проекта, клонировать полученный репозиторий и вносить изменения в него. Когда изменения будет готовы для включения в основной репозиторий вам необходимо сделать pull-request. О том как это делать можно прочесть в многочисленных описаниях на https://github.com.

Исправляя чужой код старайтесь придерживаться стиля кодирования принятого в данном исходнике и проекте.

Старайтесь своими действиями не раздражать окружающих.

Информация о Nemerle

Информацию о языке Nemerle можно подчерпнуть из статей на нашем сайте, а так же на сайте языка http://nemerle.org/.


Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
    Сообщений 12    Оценка 0        Оценить