begin process at 2010 02 10 07:24:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > SCRIPTING .NET

SCRIPTING .NET


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :.NET Source .NET ( DotNet ) Classé sous :scripting Niveau :Initié Date de création :04/04/2005 Vu / téléchargé :7 449 / 610

Auteur : sebseb42

Ecrire un message privé
Site perso
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

 Description

Ce projet vous permet d'ecrire des script en C# et de les integrer et executer au sein d'une application .NET.
Ce code vous permet de comprendre le principe de base du mecanisme de compilation du code source interne au Framework .NET, et par consequent de compiler du code C# a la volée et de l'executer dans votre application. Pour resumer, c'est un systeme de plug-in ou le plug-in n'est pas une DLL mais un code source (fichier .cs) :)


 Conclusion

Ce code est a la base pedagogique, mais il contient un Main de test pour que vous puissiez comprendre tres facilement comment l'utiliser dans vos application. Le fonctionnement est en fait tres simple, quand le programme s'execute, il prend votre code source, le compile sous forme de DLL, et ensuite se bind dessus en reflexion et execute le code de la DLL comme du code natif.

Ceci permet d'avoir du scripting sans l'inconvenient de la lenteur et des couches d'abstraction, c'est du scripting avec l'avantage de l'execution du code en natif et l'assembly de votre code communique directement avec les autres assembly de votre programme.

La classe CodeCompile sert a compiler le code source C#.
La classe Plugin sert a gerer la DLL et executer des fonctions directement de maniere simple.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) WORLDCUP RSS
Source avec Zip Source avec une capture Source .NET (Dotnet) SECURECOMM (RSA)
Source avec Zip Source .NET (Dotnet) USB DETECTOR
Source avec Zip Source .NET (Dotnet) "DIFF" SUR DES ARBORESCENCES DE FICHIERS DONNÉS
Source avec Zip Source avec une capture Source .NET (Dotnet) ROPE SIMULATOR

 Sources de la même categorie

Source avec Zip CHAT SERVER-CLIENT par abderrahmenbilog
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMULATION DE CONSOLE POUR WINDOWS MOBILE par originalcompo
Source avec Zip Source .NET (Dotnet) BASE DE DONNÉES EN XML par DanMor498
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLECONV - APPLICATION DE CONVERSION MONÉTAIRE AVEC TAUX E... par Jeffrey_
Source avec Zip Source .NET (Dotnet) TRAITEUR D'IMAGE (MINI) par ycyril

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) ADDYSCRIPT: UN MOTEUR DE SCRIPT POUR .NET par addy
Source avec Zip Source avec une capture Source .NET (Dotnet) SCRIPT ENGINE (UN DÉBUT) par Mokost

Commentaires et avis

Commentaire de kahuna le 05/04/2005 11:02:50

J'aimerais avoir plus de renseignements car ca m'a l'air très interessant mais je ne comprends pas trop comment et dans quelles occasions l'utiliser.
Pourrais tu me l'expliquer ?
Merci d'avance

Commentaire de sebseb42 le 05/04/2005 15:05:43

C'est pratique si par exemple tu veux pouvoir modifier certains comportement de ton application sans avoir a tout recompiler.

Je rappel que les fonctions de compilation sont integrer au Framework, ce qui veut dire que le programme sait compiler du code C# meme sans compilateur, just un "Runtime Environment" suffit :) c'est un peu comme si le JRE savais compiler du code Java sans JDK et sans javac :)

Je n'est pas d'exemple precis sur le moment, mais les applications peuvent etre infini, tu pourrais par exemple faire un programme qui, en fonction de ce que l'utilisateur fait, genere sont propre code, le compile et se re-link dessus, ainsi un programme peut modifier lui-meme sont propre comportement.

Je suis tout a fait d'accord que cela ne sert a rien pour un petit projet, mais imaginez un gros projet avec ce genre de chose.

On pourrais imaginer un client irc style mIRC, il serait totalement depasser point de vue scripting, ou encore toutes les IA pour les jeux video developpée en LUA ou autre.

Imagine que tu fasse un programme qui doit generer des donnes, mais que ces données en sortie, chacun veuille les exploiter selon ses propre besoin, et bien par exemple tu fait un script avec une fonction appeler et qui recoit un objet contenant les données, et la n'importe qui peut ecrire sont petit script afin de formater les données comme il l'entend, et ce sans compilation ni besoin de quoi que soit d'autre.

Un programmeur sur un poste totalement depourvu d'environement de developpement peut tres bien ecrire un script generant de l'xml, un autre generant un RSS ou encore un fichier type .ini ou autre.

Le scripting est tres souvent utiliser dans les jeux video, le probleme est que c'est un peu lent, et pas toujours facile a integrer dans une architecture de plus haut-niveau. La, le code est compiler et executer ensuite par le CLR, donc pas de souci point de vue performance, et point de vue integration, inutile d'en parler car il n'y a meme pas d'integration a faire (pas besoin d'embarquer une VM qui executerais le script)

Voila, mais il pourrait y avoir beaucoup beaucoup d'autre raisons :)

Desolé pour ceux que je n'ai pas reussi a convaincre :P

Commentaire de sebseb42 le 05/04/2005 15:09:12

Ah oui aussi, le script compiler genere une DLL que tu peux utiliser and un programme VB.NET ou ASP.NET

Ca ne serais pas tres complier que modifier le code pour qu'il soit compilalable dans une application VB ou ASP, et aussi pour qu'il puisse compiler du code VB.NET :)

Commentaire de lumesh le 07/04/2005 11:22:31

ou tout simplement créer un système de plugins pour son application tout en proposant a tout un chyacun de developper des plugins puissant, rapide et 100% intégrable au noyau de l'application. Franchement ce système est a etudier tres profondement !

Commentaire de sebseb42 le 07/04/2005 18:03:10

En effet c'est selon moi le meilleur argument mais, je ne l'ai pas citer car beaucoup pourront dire que "tout un chacun" ne code pas en C# ;)

C'est vrai, mais pourtant cette argument reste le meilleur je pense.

Commentaire de thuillez le 07/08/2005 17:04:50

Peut on aussi creer directement un *.exe?
Quand j'essaye de compiller il me met:
C:\..\..\compiler.cs(54): 'CompilerError' est une référence ambiguë

Commentaire de sebseb42 le 07/08/2005 17:09:53

oui tu peux faire un exe direct, il suffit que modifier les parametres donnees au compilateur.
cependant je ton erreur n'est pas tres claire, donnes-en plus si tu veux qu'on puisse t'aider.

Commentaire de thuillez le 07/08/2005 23:27:37

Dans le fichier compiler.cs, aus lignes 39 et 54 :  
foreach (CompilerError ce in _res.Errors)

Il me met l'erreur:
C:\..\..\compiler.cs(54): 'CompilerError' est une référence ambiguë


Pour le projet complet:
http://perso.wanadoo.fr/ecolege/prog/Scripping.zip

Commentaire de coq le 08/08/2005 07:48:27 administrateur CS

Tu dois avoir inclus 2 namespace contenant chacun une classe nommée "CompilerError".
Met son nom complet :
foreach (System.CodeDom.Compiler.CompilerError ce in _res.Errors)

Commentaire de thuillez le 08/08/2005 10:37:19

Ok, merci coq.
Bravo, tu as toujours les bonner reponces !

Commentaire de thuillez le 08/08/2005 10:48:11

Il y a encore une erreur!
Quand je compille avec ton application, il me mer les erreurs suivantes:
http://perso.wanadoo.fr/ecolege/prog/error_script.JPG

Alors que les premieres lignes sont:
using System;
using System.Drawing;
using System.Diagnostics;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Text;
using System.IO;
using System.Net;
using System.Threading;
using SHDocVw;

Quand on compille avec visual c# il y en a pas.
Il faut aussi declarer les using ?

Commentaire de sebseb42 le 08/08/2005 11:40:15

en fait il faut les using, mais il faut aussi mettre les reference, et ca pour le moment je ne l'ai pas coder dans mon application. tu dois donc le rajouter, et c'est juste avant de compiler, tu doit avec un truc du genre References dans les options du compilo, c'est un objet de type liste, donc tu fait des Add("System.IO.dll"); Add("System.Net.dll"); etc...

tu ajoute toute les references que tu as besoin

Commentaire de thuillez le 09/08/2005 14:57:13

Pourquoi as tu mis
param.MainClass = "Script";
dans ton code?

Ca me produit une erreur !

Commentaire de sebseb42 le 09/08/2005 15:00:04

C'est pour indiquer au compilateur dans quelle classe se se trouve la fonction Main qui sera utiliser comme point d'entree du programme. En C# tu peux avoir plusieurs fonctions Main.

Commentaire de thuillez le 09/08/2005 17:46:33

Ca fonctionne!
J'ai supprime la ligne.
Pour les usings il faut mettre le chemin complet!

Commentaire de thuillez le 09/08/2005 17:55:42

Il reste plus que les ressources integrée et ce sera parfait
Je te passerai la source!

Commentaire de kamal101 le 03/11/2005 15:57:43

je n'ai pas le fichier System.Net.dll su mon pc
jai le framework 1.1
commnt je ais?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

un rtb avec coloration syntaxique !! [ par Fildomen ] Salut !!j'ai programmé un ptit scripting !! mais il me faut un richtextbox avec colorisation syntaxique !! je cherche quelque chose déjà faite :D parc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales