我開發了一個應用程序,該應用程序使用c#腳本文件進行某些配置和設置。腳本文件包含各種用戶生成的對象以及這些對象的某些功能。目前,用戶必須使用第三方編輯器生成.cs文件,並提供路徑給我的程序以使用它。此方法的缺點是用戶在編輯腳本文件時不具備自動完成和智能感知支持的靈活性。使用C#作爲C#應用程序的腳本語言
我想將腳本編輯部分嵌入到我的應用程序中。我可以使用富文本編輯器來做到這一點。但是編寫auto-complete部分是一個巨大的痛苦。有什麼辦法可以向用戶提供程序內編輯器,該程序編輯器也可以自動完成...
用於在程序中動態編譯腳本的代碼。
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或powerscript?你使用哪種腳本語言? – David 2013-04-20 03:43:04
C#本身就是我的腳本語言。我使用CodeDom命名空間從我的程序中編譯C#腳本文件。 – 2013-04-20 03:44:31
天啊! C#是你的腳本?你確定? – David 2013-04-20 03:45:07