C# - 在运行时编译C#代码会导致错误“不存在”#34;

时间:2017-05-12 15:37:32

标签: c# runtime csharpcodeprovider

我试图在运行时将多个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中,一切正常,因此实际代码中没有错误。

0 个答案:

没有答案