Je me demande simplement si quelqu'un a déjà essayé d'incorporer et d'intégrer un moteur js dans l'environnement .net. Je pourrais trouver et réellement utiliser (après BEAUCOUP de douleur et d'efforts, car il est assez obsolète et pas tout à fait terminé) le projet spidermonkey-dotnet. Quelqu'un ayant de l'expérience dans ce domaine? Des moteurs comme SquirrelFish, V8 ..
Non pas que je ne sois pas satisfait du Spidermonkey de Mozilla (en l'utilisant pour un mini-cadre semblable à Rails pour des composants personnalisés à l'intérieur de l'application ASP.NET de base), mais j'aimerais quand même explorer un peu plus loin les options. Les solutions en ligne de commande ne sont pas ce dont j'ai besoin, je ne peux pas compter sur autre chose que CLR, j'ai besoin d'appeler des méthodes depuis / vers des objets 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 :)
Juste pour clarifier - je n'essaie pas de programmer l'application elle - même en javascript côté serveur. Il est utilisé uniquement pour écrire des sous-applications utilisateur personnalisées (peut être considéré comme une sorte de DSL). Il est beaucoup plus facile (et plus sûr) d'autoriser la programmation de personnes normales en js qu'en C #.
la source
L'interpréteur JavaScript open source Jint ( http://jint.codeplex.com ) fait exactement ce que vous recherchez.
Edit:
Le projet a été entièrement réécrit et est maintenant hébergé sur Github à https://github.com/sebastienros/jint
la source
Vous pourriez également être intéressé par Microsoft ClearScript qui est hébergé sur GitHub et publié sous la licence Ms-Pl.
Je ne suis pas fanboy de Microsoft, mais je dois admettre que le support V8 a à peu près les mêmes fonctionnalités que Javascript.Net, et plus important encore, le projet est toujours maintenu. En ce qui me concerne, le soutien aux délégués fonctionne également mieux qu'avec Spidermonkey-dotnet.
ps: Il supporte également JScript et VBScript mais nous n'étions pas intéressés par ce vieux truc.
ps: il est compatible avec .NET 4.0 et 4.5+
la source
Quiconque se connecte également à Jurassic:
http://jurassic.codeplex.com/
edit: cela a migré vers github (et semble actif à première vue)
https://github.com/paulbartrum/jurassic
la source
Vous pouvez essayer ironJS, semble prometteur même s'il est en plein développement. https://github.com/fholm/IronJS
la source
Je suppose que je ne suis toujours pas clair sur ce que vous essayez de faire, mais JScript.NET pourrait valoir la peine d'être examiné, bien que JScript géré semble être plus approprié à vos besoins (il ressemble plus à JavaScript qu'à JScript.NET) .
Personnellement, je pensais que ce serait cool d'intégrer la V8 d'une manière ou d'une autre, mais je n'ai pas réussi à télécharger le code source; J'aimerais avoir le temps de faire quelque chose avec.
la source
Si la langue n'est pas un problème (n'importe quel script en bac à sable), il y a LUA pour .NET . La version Silverlight du framework .NET est également en bac à sable.
la source
Hé, jetez un œil à Javascript .NET sur codeplex ( http://javascriptdotnet.codeplex.com/ ) avec la version 0.3.1, il y a de nouvelles fonctionnalités assez douces qui pourraient vous intéresser.
Découvrez un exemple de code:
la source
Vous pouvez utiliser le moteur Chakra en C #. Voici un article sur msdn montrant comment:
http://code.msdn.microsoft.com/windowsdesktop/JavaScript-Runtime-Hosting-d3a13880
la source
J'ai plutôt proposé une solution beaucoup plus simple.
J'ai construit un
.dll
fichier en utilisant Javascript, puis je l'ai compilé en utilisant le compilateur Javascript qui est disponible dans une invite de commande développeur VS2013.Une fois que nous avons le,
.dll
nous l'ajoutons simplement au\Support
dossier, puis nous l' avons référencé dans le projet qui devait évaluer les instructions Javascript.Étapes détaillées pour créer un
.dll
:Créez un fichier dans le Bloc-notes avec uniquement ces contenus:
Enregistrez le fichier sous
C:\MyEval.js
Ouvrez une invite de commande VS2005 (Démarrer, Programmes, VS2005, VS2005 Tools)
Tapez
Cd\
pour accéder àC:\
Type
Un nouveau fichier est créé nommé
MyEval.dll
.Copiez
MyEval.dll
dans le projet et référencez-le (référence égalementMicrosoft.Jscript.dll
).Ensuite, vous devriez pouvoir l'appeler comme ceci:
objResult est
True
.la source
Je viens d'essayer le script RemObjects pour .Net .
Cela fonctionne, même si j'ai dû utiliser une usine statique (
var a=A.createA();
) de JavaScript au lieu de lavar a=new A()
syntaxe. (La fonction ExposeType expose uniquement la statique!) Pas beaucoup de documentation et la source est écrite avec Delphi Prism, ce qui est plutôt inhabituel pour moi et le réflecteur RedGate.Donc: Facile à utiliser et à configurer, mais pas beaucoup d'aide pour les scénarios avancés.
Le fait d'avoir à installer quelque chose au lieu de simplement déposer les assemblys dans un répertoire est un inconvénient pour moi ...
la source
La méthode documentée de Microsoft pour ajouter une extensibilité de script à n'importe quoi est IActiveScript. Vous pouvez utiliser IActiveScript à partir de l'application anyt .NET pour appeler la logique de script. La logique peut faire partie des objets .NET que vous avez placés dans le contexte de script.
Cette réponse fournit une application qui le fait, avec du code:
la source
Il existe une implémentation d'un hôte de moteur de script ActiveX en C # disponible ici: analyser et exécuter JS par C #
Il permet d'utiliser Javascript (ou VBScript) directement à partir de C #, dans des processus natifs 32 bits ou 64 bits. La source complète est d'environ 500 lignes de code C #. Il a uniquement une dépendance implicite sur la DLL du moteur JScript (ou VBScript) installé.
Par exemple, le code suivant:
affichera 1.66666666666667
la source
Il y a aussi MsieJavaScriptEngine qui utilise le moteur Chakra d'Internet Explorer
la source
Je crois que tous les principaux moteurs JS open source (JavaScriptCore, SpiderMonkey, V8 et KJS) fournissent des API d'intégration. Le seul que je connaisse directement est JavaScriptCore (qui est le nom du moteur JS dans lequel SquirrelFish vit) qui fournit une pure API C. Si la mémoire est bonne (cela fait un moment que je n'ai pas utilisé .NET) .NET a un assez bon support pour la liaison dans les API C.
Honnêtement, je ne sais pas trop à quoi ressemblent les API des autres moteurs, mais je sais qu'ils les fournissent tous.
Cela dit, selon vos objectifs, JScript.NET peut être le meilleur, car tous ces autres moteurs vous obligeront à les inclure dans votre application, car JSC est le seul qui est réellement livré avec un système d'exploitation, mais ce système d'exploitation est MacOS: D
la source
Je sais que j'ouvre un vieux fil mais j'ai fait beaucoup de travail sur smnet (spidermonkey-dotnet). Dans les dernières années. Son objectif principal de développement a été l'intégration transparente d'objets .net dans le moteur spidermonkey. Il prend en charge une grande variété de conversions des valeurs js en objets .net. Certains d'entre eux, y compris les délégués et les événements.
Il suffit de dire qu'il vaut peut-être la peine de vérifier maintenant qu'il y a un développement constant :). Je garde le repo SVN à jour avec des corrections de bugs et de nouvelles fonctionnalités. Les fichiers de solution source et de projet sont configurés pour générer avec succès le téléchargement. En cas de problème d'utilisation, n'hésitez pas à ouvrir une discussion.
Je comprends le désir d'avoir une solution javascript gérée, mais de tous les javascript gérés que j'ai utilisés, ils manquent tous de certaines fonctionnalités clés qui les rendent à la fois robustes et faciles à utiliser. J'attends moi-même IronJS pour mûrir un peu. Pendant que j'attends, je m'amuse à jouer avec spidermonkey-dotnet =)
projet et page de téléchargement de spidermonkey-dotnet
Edit: création d'une page wiki de documentation cet après-midi.
la source
Essayez ReoScript , un interpréteur JavaScript open source implémenté en C #.
ReoScript permet à votre application d'exécuter JavaScript. Il a une grande variété de méthons d'extension tels que SetVariable, Extension de fonction, en utilisant le type CLR, la liaison d'événements .Net, etc.
Bonjour le monde:
Et voici un exemple de script qui crée un winform et l'affiche.
la source
Utilisez JSCRIPT.NET pour obtenir une bibliothèque (dll) des js. Référencez ensuite cette DLL dans votre application .NET et vous y êtes. TERMINÉ!
la source
Vous pouvez utiliser Rhino un moteur Javascript Mozilla écrit sur Java, et l'utiliser avec IKVM, voici quelques instructions
Instructions: https://www.codeproject.com/Articles/41792/Embedding-JavaScript-into-C-with-Rhino-and-IKVM
la source
V8.NET est un nouveau venu sur le bloc (en avril 2013) qui enveloppe plus étroitement la fonctionnalité native du moteur V8. Il permet un meilleur contrôle de la mise en œuvre.
la source
C'est possible maintenant avec
ASP.Net MVC4 Razor
View Engine. le code sera le suivant:et
Razor
n'est pas seulement pour MVC4 ou d'autres applications Web et vous pouvez l'utiliser dans des applications de bureau hors ligne.la source