Ho sviluppato un'applicazione che utilizza file di script C# per determinate configurazioni e impostazioni. Il file di script contiene vari oggetti generati dall'utente e determinate funzioni su quegli oggetti. Attualmente, l'utente deve generare un file .cs utilizzando un editor di terze parti e fornire il percorso al mio programma per farne uso. Lo svantaggio di questo metodo è che l'utente non ha la flessibilità del completamento automatico e del supporto intellisense durante la modifica dei file di script.Utilizzo di C# come linguaggio di scripting per un'applicazione C#
Desidero incorporare la parte di modifica degli script nella mia applicazione. Posso farlo usando un editor RTF. Ma codificare la parte auto-completa è un enorme dolore. C'è un modo in cui posso fornire all'utente un editor in-programma che esegue anche il completamento automatico ....
Codice per compilare uno script in modo dinamico in un programma.
public String Compile(String inputfilepath)
{
CompilerResults res = null;
CSharpCodeProvider provider = new CSharpCodeProvider();
String errors = "";
if (provider != null)
{
try
{
Assembly asb = Assembly.Load("BHEL.PUMPSDAS.Datatypes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=81d3de1e03a5907d");
CompilerParameters options = new CompilerParameters();
options.GenerateExecutable = false;
options.OutputAssembly = String.Format(outFileDir + oName);
options.GenerateInMemory = false;
options.TreatWarningsAsErrors = false;
options.ReferencedAssemblies.Add("System.dll");
options.ReferencedAssemblies.Add("System.Core.dll");
options.ReferencedAssemblies.Add("System.Xml.dll");
options.ReferencedAssemblies.Add("System.Xml.dll");
options.ReferencedAssemblies.Add(asb.Location);
res = provider.CompileAssemblyFromFile(options, inputfilepath);
errors = "";
if (res.Errors.HasErrors)
{
for (int i = 0; i < res.Errors.Count; i++)
{
errors += "\n " + i + ". " + res.Errors[i].ErrorText;
}
}
}
catch (Exception e)
{
throw (new Exception("Compilation Failed with Exception!\n" + e.Message +
"\n Compilation errors : \n" + errors + "\n"));
}
}
return errors;
}
Lua, Python o powerscript? Quale linguaggio di script stai usando? – David
C# stesso è il mio linguaggio di scripting. Sto usando lo spazio dei nomi CodeDom per compilare i file di script C# al volo dal mio programma. –
oh mio dio! C# è il tuo script? Sei sicuro? – David