DuoCode позволяет перекрестно компилировать код C # в JavaScript. Хотя это будет коммерческий продукт, разработчикам предлагается подать заявку на участие в бета-тестировании, и вскоре ожидается публичная бета-версия.
DuoCode интегрирован с Visual Studio IDE и использует платформу компилятора Microsoft .NET (ранее известную как Roslyn) для анализа кода C #.
Roslyn используется для синтаксического анализа кода, генерации синтаксического дерева (AST) и контекстного анализа. Затем код передается в DuoCode для перевода кода и генерации кода JavaScript и исходных карт.
По словам группы разработчиков DuoCode, хотя JavaScript идеально подходит для написания приложений, работающих в браузере, не всегда возможно (или жизнеспособно) переписать значительные части основной бизнес-логики на JavaScript, продолжая:
«На протяжении многих лет было много попыток создать языки, которые переводятся на JavaScript (TypeScript, CoffeeScript, и многие другие), но ни одна из них не обеспечивает действительно мощные возможности и инструменты, доступные разработчикам на C #. До настоящего времени!»
DuoCode использует компилятор Roslyn, теперь известный как .NET Compiler Platform. Разработчики говорят, что это позволяет DuoCode:
«Полностью понять» C # и все его функции (включая новые возможности языка C # 6) и точно преобразовать их в соответствующий JavaScript ».
Они говорят, что DuoCode поддерживает такие вещи, как Generics, Reflection, LINQ и dynamic, обеспечивая при этом полную поддержку Visual Studio для IntelliSense, подсветку синтаксиса и даже отладку исходного кода C # в вашем браузере.
Приведенное выше изображение взято из демонстрации для браузера, написанной на C # для компиляции в JavaScript с использованием DuoCode. Щелкните изображение, чтобы перейти на страницу duoco.de/samples/webgl/index. Нажатие F12 позволяет увидеть исходный код, и если вы включите исходные карты в своем браузере, вы можете напрямую отлаживать код C #.
DuoCode будет коммерческим и не будет иметь открытый исходный код и нацелен на компании, у которых есть большое количество уже существующих проектов C #, которые они хотят повторно использовать в JavaScript. Бета-версию можно использовать до 30 июня 2015 года.