特定の構成と設定に c# スクリプト ファイルを使用するアプリケーションを開発しました。スクリプト ファイルには、さまざまなユーザー生成オブジェクトと、それらのオブジェクトに対する特定の関数が含まれています。現在、ユーザーはサードパーティのエディターを使用して .cs ファイルを生成し、それを使用するためにプログラムへのパスを提供する必要があります。この方法の欠点は、スクリプト ファイルの編集中に、ユーザーがオートコンプリートやインテリセンス風のサポートを柔軟に利用できないことです。
スクリプト編集部分をアプリケーションに組み込みたい。これは、リッチテキスト エディターを使用して行うことができます。しかし、オートコンプリート部分のコーディングは非常に面倒です。オートコンプリートも行うプログラム内エディターをユーザーに提供できる方法はありますか....
プログラムでスクリプトを動的にコンパイルするためのコード。
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;
}