просто интересно, пытался ли кто-нибудь когда-либо встраивать и интегрировать какой-либо движок js в среду .net. Я мог бы найти и на самом деле использовать (после ЛОТ боли и усилий, так как это довольно устаревшей и не совсем законченный) SpiderMonkey-DotNet проект. Кто-нибудь с опытом в этой области? Двигатели типа SquirrelFish, V8 ..
Не то чтобы я не был удовлетворен Spidermonkey в Mozilla (использующим его для Railf-подобных мини-фреймворков для пользовательских компонентов внутри основного приложения ASP.NET), но я все же хотел бы немного подробнее изучить варианты. Решения командной строки - это не то, что мне нужно, я не могу полагаться ни на что, кроме CLR, мне нужно вызывать методы из / в объекты JavaScript / C #.
// c# class
public class A
{
public string Hello(string msg)
{
return msg + " whatewer";
}
}
// js snippet
var a = new A();
console.log(a.Hello('Call me')); // i have a console.log implemented, don't worry, it's not a client-side code :)
Просто чтобы уточнить - я не пытаюсь на самом деле программировать само приложение на серверном JavaScript. Он используется исключительно для написания пользовательских пользовательских приложений (может рассматриваться как своего рода DSL). Гораздо проще (и безопаснее) позволить нормальным людям программировать на js, чем на C #.
источник
Интерпретатор JavaScript с открытым исходным кодом Jint ( http://jint.codeplex.com ) делает именно то, что вы ищете.
Изменить:
проект был полностью переписан и теперь размещается на Github по адресу https://github.com/sebastienros/jint
источник
Вы также можете быть заинтересованы в Microsoft ClearScript, который размещен на GitHub и опубликован под лицензией Ms-Pl.
Я не фанат Microsoft, но должен признать, что поддержка V8 имеет те же функции, что и Javascript.Net, и, что более важно, проект все еще поддерживается. Насколько мне известно, поддержка делегатов также работает лучше, чем в Spidermonkey-dotnet.
PS: Он также поддерживает JScript и VBScript, но мы не были заинтересованы в этом старом материале.
PS: он совместим с .NET 4.0 и 4.5+
источник
Кто-нибудь, только настраивающийся, проверяет юрский также:
http://jurassic.codeplex.com/
редактировать: это перемещено в GitHub (и кажется активным на первый взгляд)
https://github.com/paulbartrum/jurassic
источник
Вы можете попробовать ironJS, выглядит многообещающе, хотя и находится в стадии разработки. https://github.com/fholm/IronJS
источник
Думаю, мне все еще неясно, что вы пытаетесь сделать, но JScript.NET, возможно, стоит рассмотреть, хотя Managed JScript кажется более подходящим для ваших нужд (это больше похоже на JavaScript, чем на JScript.NET). ,
Лично я думал, что было бы здорово каким-то образом интегрировать V8, но я так и не смог скачать исходный код; Жаль, что у меня не было времени, чтобы действительно что-то с этим сделать.
источник
Если язык не является проблемой (любой из скриптовых программ), то есть LUA для .NET . Версия Silverlight .NET Framework также помещается в песочницу.
источник
Эй, посмотрите на Javascript .NET на codeplex ( http://javascriptdotnet.codeplex.com/ ) с версией 0.3.1, есть некоторые довольно приятные новые функции, которые, вероятно, вас заинтересуют.
Проверьте пример кода:
источник
Вы можете использовать двигатель Chakra в C #. Вот статья на MSDN, показывающая, как:
http://code.msdn.microsoft.com/windowsdesktop/JavaScript-Runtime-Hosting-d3a13880
источник
Вместо этого я придумал гораздо более простое решение.
Я создал
.dll
файл с использованием Javascript, а затем скомпилировал его с помощью компилятора Javascript, который доступен в командной строке разработчика VS2013.Получив,
.dll
мы просто добавляем его в\Support
папку, а затем ссылаемся на него в проекте, который необходим для оценки операторов Javascript.Подробные шаги для создания
.dll
:Создайте файл в Блокноте только с этим содержанием:
Сохраните файл как
C:\MyEval.js
Откройте командную строку VS2005 (Пуск, Программы, VS2005, VS2005 Инструменты)
Тип,
Cd\
чтобы добраться доC:\
Тип
Создается новый файл с именем
MyEval.dll
.Скопировать
MyEval.dll
в проект и ссылаться на него (также ссылкаMicrosoft.Jscript.dll
).Тогда вы сможете назвать это так:
objResult есть
True
.источник
Я только что попробовал RemObjects Script для .Net .
Это работает, хотя мне пришлось использовать статический factory (
var a=A.createA();
) из JavaScript вместоvar a=new A()
синтаксиса. (Функция ExposeType предоставляет только статику!) Не так много документации, а источник написан с помощью Delphi Prism, что довольно необычно для меня и RedGate Reflector.Итак: Прост в использовании и настройке, но не сильно помогает для сложных сценариев.
Кроме того, необходимость устанавливать что-то вместо того, чтобы просто сбрасывать сборки в каталог, для меня является негативом ...
источник
Документированный способ добавления расширяемости скриптов к чему-либо от Microsoft - это IActiveScript. Вы можете использовать IActiveScript из любого приложения .NET для вызова логики скрипта. Логика может использоваться для объектов .NET, которые вы поместили в контекст сценариев.
Этот ответ предоставляет приложение, которое делает это, с кодом:
источник
Существует реализация узла механизма сценариев ActiveX на C #, доступная здесь: анализ и выполнение JS на C #
Это позволяет использовать Javascript (или VBScript) непосредственно из C #, в собственных 32-битных или 64-битных процессах. Полный исходный код ~ 500 строк кода C #. Он имеет неявную зависимость только от установленной библиотеки DLL движка JScript (или VBScript).
Например, следующий код:
будет отображать 1.66666666666667
источник
Существует также MsieJavaScriptEngine, который использует движок чакр Internet Explorer.
источник
Я считаю, что все основные движки JS с открытым исходным кодом (JavaScriptCore, SpiderMonkey, V8 и KJS) предоставляют API для встраивания. Единственный, с кем я на самом деле непосредственно знаком, это JavaScriptCore (это имя движка JS, в котором живет SquirrelFish), который предоставляет чистый C API. Если память не работает (это было давно, так как я использовал .NET) .NET имеет довольно хорошую поддержку для ссылок в C API.
Я честно не уверен, на что похожи API для других движков, но я знаю, что они все предоставляют их.
Тем не менее, в зависимости от ваших целей JScript.NET может быть лучшим, так как все эти другие механизмы потребуют, чтобы вы включили их в свое приложение, поскольку JSC является единственным, который фактически поставляется с ОС, но эта ОС - MacOS: D
источник
Я знаю, что открываю старую ветку, но я проделал большую работу над smnet (spidermonkey-dotnet). В последние годы Основное внимание было уделено внедрению объектов .net в движок spidermonkey. Он поддерживает широкий спектр преобразований из js-значений в .net-объекты. Некоторые из них, включая делегатов и мероприятия.
Просто скажу, что сейчас стоит проверить, что на этом есть устойчивое развитие :). Я постоянно обновляю репозиторий SVN, исправляя ошибки и добавляя новые функции. Файлы исходного кода и проекта настроены для успешной сборки при загрузке. Если есть какие-либо проблемы с его использованием, не стесняйтесь открывать обсуждение.
Я понимаю желание иметь управляемое решение для javascript, но из всех управляемых javascript, которые я использовал, им очень не хватает некоторых ключевых функций, которые помогают сделать их надежными и удобными для работы. Я сам жду, пока IronJS немного повзрослеет. Пока я жду, мне весело играть с spidermonkey-dotnet =)
Проект spidermonkey-dotnet и страница загрузки
Изменить: создал документацию вики днем.
источник
Попробуйте ReoScript , интерпретатор JavaScript с открытым исходным кодом, реализованный на C #.
ReoScript делает ваше приложение может выполнять JavaScript. Он имеет широкий спектр метонов расширения, таких как SetVariable, Function Extension, использование типа CLR, привязка событий .Net и т. Д.
Привет мир:
А вот пример скрипта, который создает winform и показывает ее.
источник
Используйте JSCRIPT.NET, чтобы получить библиотеку (dll) js. Затем обратитесь к этой DLL в вашем .NET-приложении, и вы только там. СДЕЛАНО!
источник
Вы можете использовать Rhino движок Mozilla Javascript, написанный на Java, и использовать его с IKVM, вот несколько инструкций
Инструкции: https://www.codeproject.com/Articles/41792/Embedding-JavaScript-into-C-with-Rhino-and-IKVM
источник
V8.NET - это новичок в блоке (по состоянию на апрель 2013 года), который более тесно связывает функциональность родного движка V8. Это позволяет лучше контролировать реализацию.
источник
Теперь это возможно с
ASP.Net MVC4 Razor
движком View. код будет таким:и
Razor
не только для MVC4 или других веб-приложений, и вы можете использовать его в автономных настольных приложениях.источник