updfate 20250919
This commit is contained in:
113
ZZ_Scripting/Form1.cs
Normal file
113
ZZ_Scripting/Form1.cs
Normal file
@@ -0,0 +1,113 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Globalization;
|
||||
using System.CodeDom.Compiler;
|
||||
using System.Text;
|
||||
using Microsoft.CSharp;
|
||||
using Microsoft.VisualBasic;
|
||||
|
||||
namespace ZZ_Scripting
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
public Form1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
// CompileExecutable(args[0]);
|
||||
}
|
||||
|
||||
public static bool CompileExecutable(String sourceName)
|
||||
{
|
||||
FileInfo sourceFile = new FileInfo(sourceName);
|
||||
CodeDomProvider provider = null;
|
||||
bool compileOk = false;
|
||||
|
||||
// Select the code provider based on the input file extension.
|
||||
if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".CS")
|
||||
{
|
||||
provider = CodeDomProvider.CreateProvider("CSharp");
|
||||
}
|
||||
else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".VB")
|
||||
{
|
||||
provider = CodeDomProvider.CreateProvider("VisualBasic");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Source file must have a .cs or .vb extension");
|
||||
}
|
||||
|
||||
if (provider != null)
|
||||
{
|
||||
|
||||
// Format the executable file name.
|
||||
// Build the output assembly path using the current directory
|
||||
// and <source>_cs.exe or <source>_vb.exe.
|
||||
|
||||
String exeName = String.Format(@"{0}\{1}.exe",
|
||||
System.Environment.CurrentDirectory,
|
||||
sourceFile.Name.Replace(".", "_"));
|
||||
|
||||
CompilerParameters cp = new CompilerParameters();
|
||||
|
||||
// Generate an executable instead of
|
||||
// a class library.
|
||||
cp.GenerateExecutable = true;
|
||||
|
||||
// Specify the assembly file name to generate.
|
||||
cp.OutputAssembly = exeName;
|
||||
|
||||
// Save the assembly as a physical file.
|
||||
cp.GenerateInMemory = false;
|
||||
|
||||
// Set whether to treat all warnings as errors.
|
||||
cp.TreatWarningsAsErrors = false;
|
||||
|
||||
// Invoke compilation of the source file.
|
||||
CompilerResults cr = provider.CompileAssemblyFromFile(cp,
|
||||
sourceName);
|
||||
|
||||
if (cr.Errors.Count > 0)
|
||||
{
|
||||
// Display compilation errors.
|
||||
Console.WriteLine("Errors building {0} into {1}",
|
||||
sourceName, cr.PathToAssembly);
|
||||
foreach (CompilerError ce in cr.Errors)
|
||||
{
|
||||
Console.WriteLine(" {0}", ce.ToString());
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Display a successful compilation message.
|
||||
Console.WriteLine("Source {0} built into {1} successfully.",
|
||||
sourceName, cr.PathToAssembly);
|
||||
}
|
||||
|
||||
// Return the results of the compilation.
|
||||
if (cr.Errors.Count > 0)
|
||||
{
|
||||
compileOk = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
compileOk = true;
|
||||
}
|
||||
}
|
||||
return compileOk;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user