特定の構成と設定にc#スクリプトファイルを使用するアプリケーションを開発しました。スクリプトファイルには、さまざまなユーザー生成オブジェクトとそのオブジェクトの特定の機能が含まれています。現在、サードパーティのエディタを使用して.csファイルを生成し、プログラムのパスを使用する必要があります。この方法の欠点は、ユーザーがスクリプトファイルの編集中にオートコンプリートとインテリセンスエスクサポートの柔軟性を持たないことです。C#アプリケーションのスクリプト言語としてC#を使用する
スクリプト編集部分を自分のアプリケーションに埋め込んでいます。私はリッチテキストエディタを使ってそれを行うことができます。しかし、自動完成品のコーディングは大きな苦痛です。どのような方法で私は、オートコンプリートを行うプログラム内エディタをユーザに提供することができますか?
プログラム内でスクリプトを動的にコンパイルするためのコード。
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;
}
ルア、Pythonまたはpowerscript?どのスクリプト言語を使用していますか? – David
C#自体は私のスクリプト言語です。私はCodeDom名前空間を使用して、私のプログラム内からその場でC#スクリプトファイルをコンパイルしています。 –
ああ私の神! C#はあなたのスクリプトですか?本気ですか? – David