Tôi đã phát triển một ứng dụng sử dụng tập tin script C# cho một số cấu hình và cài đặt nhất định. Tệp kịch bản chứa nhiều đối tượng được tạo khác nhau và một số chức năng nhất định trên các đối tượng đó. Hiện tại, người dùng phải tạo tệp .cs bằng trình chỉnh sửa của bên thứ ba và cung cấp đường dẫn đến chương trình của tôi để sử dụng nó. Những bất lợi với phương pháp này là người dùng không có sự linh hoạt của tự động hoàn thành và hỗ trợ intellisense-esque trong khi chỉnh sửa các tập tin kịch bản.Sử dụng C# làm ngôn ngữ kịch bản cho ứng dụng C#
Tôi muốn nhúng phần chỉnh sửa tập lệnh vào ứng dụng của mình. Tôi có thể làm điều đó bằng cách sử dụng một trình soạn thảo văn bản phong phú. Nhưng mã hóa phần tự động hoàn thành là một nỗi đau lớn. Có cách nào để tôi có thể cung cấp cho người dùng một trình chỉnh sửa trong chương trình cũng tự động hoàn thành ....
Mã để biên dịch một kịch bản động trong một chương trình.
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 hoặc powerscript? Bạn đang sử dụng ngôn ngữ kịch bản nào? – David
C# chính nó là ngôn ngữ kịch bản của tôi. Tôi đang sử dụng không gian tên CodeDom để biên dịch tập tin C# script ngay lập tức từ bên trong chương trình của tôi. –
ôi chúa ơi! C# là kịch bản của bạn? Bạn có chắc không? – David