J'ai ajouté "System.dll" aux paramètres du compilateur référencés assemblies.J'ai également remarqué que l'ajout de "Utilisation de System "au codeToCompile OR en utilisant" System.Math "ou" System.Double "fonctionne très bien.Pas sûr de ce qui ne va pas.C# Runtime Erreur de compilation: Le type 'Double' et 'Math' est introuvable/n'existe pas dans le contexte actuel
using Microsoft.CSharp;
using System;
using System.CodeDom.Compiler;
using System.Text;
using System.Windows.Forms;
private void onLoadPlugin(object sender, EventArgs e)
{
string codeToCompile =
@"
class TestPlugin
{
public string ArithmeticOperator
{
get { return ""X^2""; }
}
public double PerformCalculation(string value)
{
Double var = Double.Parse(value);
if (var == 0)
return 0;
return Math.Pow(var, 2);
}
}
";
CSharpCodeProvider provider = new CSharpCodeProvider();//new Dictionary<String, String> { { "CompilerVersion", "v4.0" } });
CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");//This doesn't seem to be working
parameters.GenerateInMemory = false;
parameters.GenerateExecutable = false;
parameters.OutputAssembly = "TestPlugin.dll";
CompilerResults results = provider.CompileAssemblyFromSource(parameters, codeToCompile);
if (results.Errors.Count != 0)
throw new Exception("Mission Failed");
}
essayer googler l'erreur exacte avez-vous au moins essayé d'abord ..? – MethodMan
J'ai essayé cela. Trouvé un couple "Type 'Double' et 'Math' n'a pas pu être trouvé/n'existe pas dans le contexte actuel" erreurs mais aucune par rapport à Runtime Compilation – user3845413
Que diriez-vous d'ajouter "using ...; using ...;" au codeToCompile? –