런타임시 하나의 실행 파일로 여러 C# 파일을 컴파일하려고하는데 Visual에서이 코드를 실행하면 컴파일러 오류가 계속 발생합니다. 사진관.C# - 런타임에 C# 코드를 컴파일하면 "존재하지 않는"오류가 발생합니다.
런타임 컴파일러에서 얻는 특정 오류는 "예상"이고 "메서드에는 반환 형식이 있어야합니다"라는 줄이 7 줄의 'Program.cs'에 있습니다. 분명히, 고칠 것이 있다면 이것들을 고칠 것입니다.
그래서 코드. 여기에 실제 컴파일러 코드는 다음과 같습니다 (일부 제거하여,보고 실제 오류 등) 여기
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();
}
}
}
내가 무슨 말이냐? 언급했듯이 Visual Studio에서 'Program.cs'및 'MyBot.cs'의 코드를 실행하면 모든 것이 올바르게 작동하므로 실제 코드에는 오류가 없습니다.
컴파일하고있는 다른 환경에서 Visual Studio와 C#의 이전 버전에서 C# 7을 사용하고 있습니다. –
@EricLippert 예, 좀 더 명확 해 졌을 때가되었습니다. .NET 4.6+ 코드를 실행해야하지만 컴파일러가 목표를 달성 할 수없는 것처럼 보입니다. 더 많은 연구가 필요합니다. – Hertzole