我试图在运行时将多个C#文件编译成一个可执行文件,如果我从Visual Studio运行此代码,我会不断收到编译器错误。
我从运行时编译器获得的具体错误是&#34 ;;预期"和"方法必须有一个返回类型"在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);
}
以下是它试图编译的两个文件。
Program.cs的
using System.Threading.Tasks;
namespace MyBot
{
class Program
{
static void Main(string[] args) => new MyBot().RunAsync().GetAwaiter().GetResult();
}
}
MyBot.cs
using System;
using System.Threading.Tasks;
namespace MyBot
{
public class MyBot
{
public async Task RunAsync()
{
Console.Title = "MyBot";
Console.Read();
}
}
}
我在这里缺少什么?如上所述,如果我运行' Program.cs'和' MyBot.cs'在Visual Studio中,一切正常,因此实际代码中没有错误。