Bonsoir,
je reviens vers vous car cela fait plusieurs jours que je suis sur le même problème avec l'api Roslyn.
https://roslyn.codeplex.com/
Je crée un moteur de script et une session de cette manière:
Engine = new ScriptEngine();
Session = Engine.CreateSession(Client);
Session.AddReference(Assembly.GetExecutingAssembly());
Session.AddReference(typeof(ClientInterface).GetType().Assembly);
Session.AddReference("System");
Session.AddReference("System.Linq");
J'ai voulu tester le partage de ma classe client dans le système de script que j'intègre dans le constructeur de la session.
En exécution local ton fonctionne bien:
Session.Execute("Interface.Logger.Info(" + '\u0022' + "Lool" + '\u0022' + ")");
'\u0022' correspond aux guillemets.
Cette ligne de code m'affiche "Lool" dans le formulaire client correspondant.
Cependant si j'essaye d'accéder à la classe client via un fichier script de cette manière:
Session.ExecuteFile(@"...\Scripts\MainScript.cs");
MainScript.cs
Cliquez pour révéler
Cliquez pour masquer
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AmaknaCore.Debug.Client;
using AmaknaCore.Debug.Client.Interface;
public class MainScript
{
public MainScript()
{
Init();
}
public void Init()
{
Interface.Logger.Info("Lool");
}
}
On me retourne cette belle erreur:
error CS0120: An object reference is required for the non-static field, method, or property 'AmaknaCore.Debug.Client.MainClient.Interface'
J'ai pourtant fait l'import et j'utilise la même ligne de code que plus haut.
Interface étant une variable appartenant à MainClient, Client.
Auriez-vous une idée ?