아래 코드를 사용하여 런타임 컴파일을 성공적으로 수행하고 있습니다. 입력 * .cs 파일의 수가 클 경우를 제외하고 다음 오류가 발생합니다.런타임 C# 코드에서 폴더의 모든 파일 컴파일
System.SystemException : error running mono.exe : 파일 이름 또는 확장명이 너무 깁니다.
저는 이것이 명령 줄 길이 제한이 this article 인 것으로 생각합니다.
여기에 프로그램 좋을 것 -recurse를 사용하여 해당 폴더를 통과 할 수있는 방법이 있다면 모든 소스 파일을 한 폴더에 있기 때문에 코드
var codeProvider = new CSharpCodeProvider (
new Dictionary<string, string> { { "CompilerVersion", "v4.0" } });
string EngineOutput = Path.GetFileName(dir) + ".dll";
parameters.GenerateExecutable = false;
parameters.OutputAssembly = EngineOutput;
CompilerResults results = codeProvider.CompileAssemblyFromFile (parameters, engineFiles.ToArray());
입니다. 또는 codeProvider.CompileAssemblyFromDirectoryRecursive와 같은 폴더를 사용하는 메서드가 있으면 그 코드도 훌륭하지만 존재하지 않는 것은 아는 것입니다.
다음을 시도했지만 작동하지 않았습니다. 컴파일러는/recurse로 지정된 폴더가 아닌 fake.cs만을 선택합니다.
parameters.CompilerOptions += " /recurse:" + dir + System.IO.Path.PathSeparator + "*.cs";
results = codeProvider.CompileAssemblyFromFile (parameters, new string[1] { "fake.cs" });
미리 감사드립니다.