Не так давно я рассказал о выходе в свет новой версии .Net Micro Framework. Технология интересная и перспективная, но при этом очень специфическая. Правда, как и многим open source-проектам, ей не хватает документации. Из-за этого требуется много времени для того, чтобы запустить простой пример, не говоря уже о решении каких-то реальных задач.
В данной статье я хочу исправить этот недостаток и рассказать о том, как быстро и просто установить все необходимое для работы с эмулятором .Net Micro Framework на Windows.
В данной статье речь пойдет о .Net Micro Framework версии 4.4. Начиная с этой версии, проект переехал на GitHub. Состоит он из двух веток:
Рассказывать я буду о netmf-interpreter, так как на текущий момент эта ветка лучше всего подходит для практического использования.
Более подробно о том, что такое .Net Micro Framework можно узнать из статьи “Знакомство с .Net Micro Framework” на хабре и докладов “Архитектура .Net Micro Framework” и “Краткий обзор .Net Micro Framework” на techdays.
Для начала нужно отметить, что netmf-interpreter 4.4 работает только с Visual Studio 2015 в редакциях Community, Pro и Ultimate.
Итак, начать работать netmf-interpreter 4.4 можно тремя разными способами:
Этот способ наиболее трудоемкий. Зато он позволяет использовать самый свежий код из репозитория. Кроме того, умение работать с ним пригодится в дальнейшем, если нужно будет внести изменения в эмулятор или собирать собственные “порты” под другие аппаратные платформы.
Репозиторий находится тут. Можно скачать его как zip-архив, а можно получить используя git. Инструкции на английском языке о том, как получить репозиторий и собрать из него установочные файлы, можно посмотреть тут. На основе этих инструкций и написана статья. Версии репозитория, связанные с конкретными релизами, можно скачать в zip-архивах тут.
Чтобы получить репозиторий с помощью git, нужно сделать следующее:
Важно: Требования к локальному пути (должна быть хотя бы одна родительская папка — см. п 2 работы с git) актуальны и при распаковке репозитория из архива.
К сожалению, релиз .NET Micro Framework v4.4 Release To Web (RTW) содержит ошибки, которые не позволяют сразу собрать установочные файлы из репозитория. Однако, эти ошибки можно исправить, и далее я расскажу как это сделать.
После того, как репозиторий тем или иным способом оказался скопирован в локальную папку, нужно сделать следующее:
Наконец репозиторий и все необходимые библиотеки скачаны. Можно собрать файлы для установки. Сборка происходит с помощью платформы MSBuild. Несмотря на то, что в репозитории фигурируют знакомые многим sln и proj файлы, использовать Visual Studio напрямую не получится. MSBuild используется и в Vusial Studio, но сам по себе позволяет создавать более гибкие проекты.
Итак, нужно открыть командную строку и перейти в папку с репозиторием, например так:
Затем нужно выполнить файл

Через несколько минут сборка будет окончена и, кроме множества библиотек, появятся файл
Однако второй установочный файл не будет собран из-за второй ошибки. Последним шагом будет ее исправление. Нужно скопировать файл
в папку
Эта библиотека должна копироваться автоматически при построении репозитория, но этого не делается.
Если запустить сборку репозитория еще раз, то появятся оба файла:
Они-то и нужны для дальнейшей работы.
NetmfVS14.vsix — это плагин к Visual Studio.
MicroFrameworkSDK.MSI — это эмулятор и все необходимые библиотеки. Плагин настроится сам, нужно только запустить установку. Библиотеки нужно установить в Typical-варианте:

Файлы MicroFrameworkSDK.MSI и NetmfVS14.vsix можно получить, воспользовавшись пунктом меню

В открывшемся диалоге нужно выбрать вкладку Online слева и ввести ключевое слово netmf в поиске (выделено красной рамкой):

Зелеными рамками выделено то, что нужно скачать и установить.
.NET Micro Framework project system — это плагин для Visual Studio. Он соответствует файлу NetmfVS14.vsix и устанавливается через окно Extensions and Updates.
.NET Micro Framework SDK — эмулятор, и все необходимые для работы библиотеки в виде установочного файла. Это MicroFrameworkSDK.MSI. Его необходимо скачать и инсталлировать, выбрав Typical установку:

Файлы MicroFrameworkSDK.MSI и NetmfVS14.vsix можно скачать со страницы с релизами:

NetmfVS14.vsix — это плагин к Visual Studio.
MicroFrameworkSDK.MSI — это эмулятор и все необходимые библиотеки. Плагин настроится сам, нужно только запустить установку. Библиотеки нужно установить в Typical-варианте:

Выполнив установку одним из 3-х выше перечисленных путей, мы можем приступить к созданию первого проекта на .Net Micro Framework.
Плагин для Visual Studio уже содержит несколько примеров. Нужно только выбрать, какой больше нравится.
Правда, есть один нюанс. Эмулятор устанавливается на системный, диск и его обязательно нужно запускать в режиме администратора, иначе он не сможет правильно работать. Так как эмулятор запускается из-под Visual Studio, то её и нужно запускать от имени администратора.
Итак, запускаем Visual Studio с правами администратора и создаем новый проект:

Если установка была выполнена верно, то появится новый template проекта Micro Framework:

Выберем Windows Application, как наиболее наглядный проект.
Создав solution, можно зайти в свойства проекта:

В настройках проекта появилась новая вкладка .NET Micro Framework:

Для работы с эмулятором можно оставить все значения по умолчанию.
После запуска и компиляции проекта появится окно эмулятора:

У эмулятора есть экран, 5 кнопок, две виртуальные SD-карточки и COM-порт. Все это вполне работоспособно. Например, нажатие кнопок выводит их код в окно Output Visual Studio:

На мой взгляд, этого вполне достаточно, чтобы начать знакомство с .Net Micro Framework на практике.
.Net Micro Framework — перспективный open source-проект, позволяющий писать код на C# под микроконтроллеры. С развитием идей IoT и появлением концепции UWP его развитие получило новый импульс. Со временем он должен закрыть нишу совсем маленьких устройств, на которых нельзя запустить Windows 10 IoT, и при этом полностью поддерживать концепцию UWP.
Однако, как и множество open source проектов, у .Net Micro Framework есть проблемы с документацией. Поэтому разобраться с тем, как его использовать, не всегда легко. Я постарался исправить эту ситуацию и показать, что начать работать с ним можно, потратив всего 5 минут.
Тем, кому интересно поработать не с эмулятором, а с реальным устройством на базе .Net Micro Framework, предлагаю набраться терпения и дождаться следующей статьи.
Update: Статью про запуск .NET Micro Fraimwork на STM32F4Discovery можно почитать тут.
В данной статье я хочу исправить этот недостаток и рассказать о том, как быстро и просто установить все необходимое для работы с эмулятором .Net Micro Framework на Windows.

В данной статье речь пойдет о .Net Micro Framework версии 4.4. Начиная с этой версии, проект переехал на GitHub. Состоит он из двух веток:
- llilum — новой платформы, которая использует компиляцию C# непосредственно в ассемблерный код микроконтроллера,
- netmf-interpreter — .Net Micro Framework interpreter, “классической” ветки, использующей “порты” среды исполнения под конкретные аппаратные платформы.
Рассказывать я буду о netmf-interpreter, так как на текущий момент эта ветка лучше всего подходит для практического использования.
Более подробно о том, что такое .Net Micro Framework можно узнать из статьи “Знакомство с .Net Micro Framework” на хабре и докладов “Архитектура .Net Micro Framework” и “Краткий обзор .Net Micro Framework” на techdays.
Для начала нужно отметить, что netmf-interpreter 4.4 работает только с Visual Studio 2015 в редакциях Community, Pro и Ultimate.
Итак, начать работать netmf-interpreter 4.4 можно тремя разными способами:
- Собрать установочные файлы из репозитория,
- Скачать установочные файлы со страницы с релизами на GitHub,
- Скачать установочные файлы через Extensions and Udpates Visual Studio 2015.
Сборка из репозитория
Этот способ наиболее трудоемкий. Зато он позволяет использовать самый свежий код из репозитория. Кроме того, умение работать с ним пригодится в дальнейшем, если нужно будет внести изменения в эмулятор или собирать собственные “порты” под другие аппаратные платформы.
Репозиторий находится тут. Можно скачать его как zip-архив, а можно получить используя git. Инструкции на английском языке о том, как получить репозиторий и собрать из него установочные файлы, можно посмотреть тут. На основе этих инструкций и написана статья. Версии репозитория, связанные с конкретными релизами, можно скачать в zip-архивах тут.
Чтобы получить репозиторий с помощью git, нужно сделать следующее:
- Создать публичную копию на вашем аккаунте на серверах GitHub сделав fork. Все pull-запросы должны идти с публичного GitHub репозитория.
- Получить локальную копию репозитория, используя clone. Например, вот так:
git clone https://github.com/<your GitHub ID>/netmf-interpreter.git
Важно: При выборе пути для локального репозитория нужно обязательно сделать хотя бы одну родительскую папку. Например,D:\NETMF\repo, гдеrepo— папка для репозитория. Это требуется для его правильной сборки.
- Настроить локальный репозиторий, как Upstream. Это позволит получать с помощью pull изменения с последних официальных коммитов и разбирать все несоответствия при получении кода локально до выполнения запроса pull. Для настройки Upstream можно использовать следующую команду:
git remote add upstream https://github.com/NETMF/netmf-interpreter.git
Важно: Требования к локальному пути (должна быть хотя бы одна родительская папка — см. п 2 работы с git) актуальны и при распаковке репозитория из архива.
К сожалению, релиз .NET Micro Framework v4.4 Release To Web (RTW) содержит ошибки, которые не позволяют сразу собрать установочные файлы из репозитория. Однако, эти ошибки можно исправить, и далее я расскажу как это сделать.
После того, как репозиторий тем или иным способом оказался скопирован в локальную папку, нужно сделать следующее:
- Скачать binary tools zip файл. Этот файл содержит утилиты, необходимые для сборки как установочных файлов, так и “портов” для устройств. В будущем планируется отказаться от этих утилит, но пока еще они нужны.
- Разархивировать содержимое binary tools zip-файла в родительскую папку репозитория. Например для пути
D:\NETMF\repo, гдеrepo— папка для репозитория, папкиbinиtoolsдолжны оказаться в папкеD:\NETMF. - Важно: В файле
<repo folder>\Framework\Tools\BuildTasksInternal\BuildSigner\BuildSignerSpotBuild.csproj
в строке 37 нужно заменить
<HintPath>$(MSBuildProgramFiles32)\Microsoft Internal\Codesign.Submitter\CODESIGN.Submitter.dll</HintPath>
на
<HintPath>$(SPOROOT)\tools\x86\CODESIGN\CODESIGN.Submitter.dll</HintPath>
Это исправление первой ошибки. Без такой замены собрать репозиторий не удастся. Как было сказано выше, .Net Micro Framework это open source проект и, к сожалению, он сталкивается с теми же проблемами, что и другие открытые проекты. Это исправление необходимо только для релиза .NET Micro Framework v4.4 Release To Web (RTW). В дальнейшем репозиторий уже будет содержать поправленные файлы. Про эту проблему можно почитать тут. - Нужно скачать библиотеку CMSIS и положить ее в папку
<repo folder>\СMSIS.Где ее брать и какая именно версия нужна, написано в файле<repo folder>\СMSIS\ReadMe.md.
CMSIS расшифровывается как Cortex Microcontroller Software Interface Standart. Это не зависящая от конкретного производителя библиотека для работы с ядром Cortex-M, поставляемая и поддерживаемая разработчиками ядра — компанией ARM. Использование этой библиотеки позволяет существенно упростить создание “портов” на разные микроконтроллеры разных производителей.
В случае с версией .Net Micro Framework 4.4 нужно скачать CMSIS не ниже версии 4.3. Библиотека поставляется в виде zip-архива (CMSIS-SP-00300-r4p3-00rel0.zip). Ее можно скачать на сайте ARM. Содержимое архива нужно положить в папку<repo folder>\СMSIS. - Далее нужно установить .Net Micro Framework Cryptographic Libraries. Эти библиотеки используются для подписи сборок, которые будут исполняться на микроконтроллерах. Для работы нужны только ис��олняемые файлы криптографической библиотеки. Но, при желании, можно узнать как она устроена, так как можно посмотреть и исходные коды.
Библиотеки доступны в виде установочного msi файла. Я рекомендую установить их в любую удобную папку (далее будем называть ее<crypto install folder>), а затем копировать их в корень каждого репозитория, напримерD:\NETMF\repoиD:\NETMF\repo_master.
Отдельная папка с криптографическими библиотеками потребуется для исправления второй ошибки сборки.
Наконец репозиторий и все необходимые библиотеки скачаны. Можно собрать файлы для установки. Сборка происходит с помощью платформы MSBuild. Несмотря на то, что в репозитории фигурируют знакомые многим sln и proj файлы, использовать Visual Studio напрямую не получится. MSBuild используется и в Vusial Studio, но сам по себе позволяет создавать более гибкие проекты.
Итак, нужно открыть командную строку и перейти в папку с репозиторием, например так:
cd /d D:\WORKDIR\NetMf\NetMFRepo\repo
Затем нужно выполнить файл
build_sdk.cmd. Это запустит сборку репозитория:
Через несколько минут сборка будет окончена и, кроме множества библиотек, появятся файл
<repo folder>\BuildOutput\public\Release\Server\dll\NetmfVS14.vsixОднако второй установочный файл не будет собран из-за второй ошибки. Последним шагом будет ее исправление. Нужно скопировать файл
<crypto install folder>\crypto\lib\x86\dll\crypto.dll
в папку
<repo folder>\BuildOutput\public\Release\Server\dll\
Эта библиотека должна копироваться автоматически при построении репозитория, но этого не делается.
Если запустить сборку репозитория еще раз, то появятся оба файла:
<repo folder>\BuildOutput\public\Release\Server\dll\NetmfVS14.vsix<repo folder>\BuildOutput\public\Release\Server\msm\MicroFrameworkSDK.MSIОни-то и нужны для дальнейшей работы.
NetmfVS14.vsix — это плагин к Visual Studio.
MicroFrameworkSDK.MSI — это эмулятор и все необходимые библиотеки. Плагин настроится сам, нужно только запустить установку. Библиотеки нужно установить в Typical-варианте:

Установка из Visual Studio
Файлы MicroFrameworkSDK.MSI и NetmfVS14.vsix можно получить, воспользовавшись пунктом меню
Tools->Extensions and Updates в Visual Studio:
В открывшемся диалоге нужно выбрать вкладку Online слева и ввести ключевое слово netmf в поиске (выделено красной рамкой):

Зелеными рамками выделено то, что нужно скачать и установить.
.NET Micro Framework project system — это плагин для Visual Studio. Он соответствует файлу NetmfVS14.vsix и устанавливается через окно Extensions and Updates.
.NET Micro Framework SDK — эмулятор, и все необходимые для работы библиотеки в виде установочного файла. Это MicroFrameworkSDK.MSI. Его необходимо скачать и инсталлировать, выбрав Typical установку:

Скачивание с GitHub
Файлы MicroFrameworkSDK.MSI и NetmfVS14.vsix можно скачать со страницы с релизами:

NetmfVS14.vsix — это плагин к Visual Studio.
MicroFrameworkSDK.MSI — это эмулятор и все необходимые библиотеки. Плагин настроится сам, нужно только запустить установку. Библиотеки нужно установить в Typical-варианте:

Создание и запуск первого проекта
Выполнив установку одним из 3-х выше перечисленных путей, мы можем приступить к созданию первого проекта на .Net Micro Framework.
Плагин для Visual Studio уже содержит несколько примеров. Нужно только выбрать, какой больше нравится.
Правда, есть один нюанс. Эмулятор устанавливается на системный, диск и его обязательно нужно запускать в режиме администратора, иначе он не сможет правильно работать. Так как эмулятор запускается из-под Visual Studio, то её и нужно запускать от имени администратора.
Итак, запускаем Visual Studio с правами администратора и создаем новый проект:

Если установка была выполнена верно, то появится новый template проекта Micro Framework:

Выберем Windows Application, как наиболее наглядный проект.
Создав solution, можно зайти в свойства проекта:

В настройках проекта появилась новая вкладка .NET Micro Framework:

Для работы с эмулятором можно оставить все значения по умолчанию.
После запуска и компиляции проекта появится окно эмулятора:

У эмулятора есть экран, 5 кнопок, две виртуальные SD-карточки и COM-порт. Все это вполне работоспособно. Например, нажатие кнопок выводит их код в окно Output Visual Studio:

На мой взгляд, этого вполне достаточно, чтобы начать знакомство с .Net Micro Framework на практике.
Заключение
.Net Micro Framework — перспективный open source-проект, позволяющий писать код на C# под микроконтроллеры. С развитием идей IoT и появлением концепции UWP его развитие получило новый импульс. Со временем он должен закрыть нишу совсем маленьких устройств, на которых нельзя запустить Windows 10 IoT, и при этом полностью поддерживать концепцию UWP.
Однако, как и множество open source проектов, у .Net Micro Framework есть проблемы с документацией. Поэтому разобраться с тем, как его использовать, не всегда легко. Я постарался исправить эту ситуацию и показать, что начать работать с ним можно, потратив всего 5 минут.
Тем, кому интересно поработать не с эмулятором, а с реальным устройством на базе .Net Micro Framework, предлагаю набраться терпения и дождаться следующей статьи.
Update: Статью про запуск .NET Micro Fraimwork на STM32F4Discovery можно почитать тут.