我试图在运行时将多个 C# 文件编译成一个可执行文件,如果我从 Visual Studio 运行此代码,我会不断收到不存在的编译器错误。
我从运行时编译器得到的具体错误是“;预期”和“Program.cs”第 7 行的“方法必须具有返回类型”。显然,如果有什么要修复的,我会修复这些。
所以代码。这是实际的编译器代码:(删除了一些部分,例如实际的错误报告)
private CSharpCodeProvider provider = new CSharpCodeProvider();
private CompilerParameters parameters = new CompilerParameters();
private void RunOption_Click(object sender, RoutedEventArgs e)
{
parameters.GenerateInMemory = false;
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Path + "/builds/debug/bot.exe";
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Threading.Tasks.dll");
parameters.CompilerOptions = "/optimize";
parameters.WarningLevel = 3;
parameters.TreatWarningsAsErrors = false;
string[] filesToCompile = Directory.GetFiles(Path + "\\src\\", "*.cs");
CompilerResults results = provider.CompileAssemblyFromFile(parameters, filesToCompile);
}
这是它试图编译的两个文件。
程序.cs
using System.Threading.Tasks;
namespace MyBot
{
class Program
{
static void Main(string[] args) => new MyBot().RunAsync().GetAwaiter().GetResult();
}
}
我的机器人.cs
using System;
using System.Threading.Tasks;
namespace MyBot
{
public class MyBot
{
public async Task RunAsync()
{
Console.Title = "MyBot";
Console.Read();
}
}
}
我在这里想念什么?如前所述,如果我在 Visual Studio 中运行“Program.cs”和“MyBot.cs”中的代码,一切正常,因此实际代码中没有错误。