Ich habe "System.dll" zum Compiler-Parameter referenzierte Assemblys hinzugefügt. Ich bemerkte auch, dass das Hinzufügen zu "Using System "an die codeToCompile ODER mit" System.Math "oder" System.Double "funktioniert gut.Nicht sicher, was los ist.C# Runtime Compilierungsfehler: Typ 'Double' und 'Math' konnte nicht gefunden werden/existiert nicht im aktuellen Kontext
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");
}
versuchen, den genauen Fehlern googeln Sie haben zumindest versucht, die ersten ..? – MethodMan
Versuchte das. Paar gefunden "Typ 'Double' und 'Math' konnten nicht gefunden werden/existiert im aktuellen Kontext nicht" Fehler aber keine in Bezug auf Runtime Compilation – user3845413
Wie wäre es mit "using ...; using ...;" zur codeToCompile? –