Je compile avec succès le code ci-dessous. Sauf que lorsque le nombre de fichiers d'entrée * .cs est grand, j'obtiens l'erreur suivante. System.SystemException: Erreur lors de l'exécution de mono.exe: le nom de fichier ou l'extension est trop long. Je crois que cela est dû à la limite de longueur de la ligne de commande comme this article.Runtime C# Compiler tous les fichiers d'un dossier à partir du code
Voici le code
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());
Comme tous les fichiers source sont dans un dossier, s'il y a un moyen de transmettre ce dossier en utilisant la -recurse sera programmation grand. Ou s'il y avait une méthode qui prend un dossier comme codeProvider.CompileAssemblyFromDirectoryRecursive qui aurait aussi été génial, mais à ma connaissance cela n'existe pas.
J'ai essayé ce qui suit, mais cela n'a pas fonctionné. Le compilateur ne choisit que fake.cs et pas le dossier spécifié par/recurse.
parameters.CompilerOptions += " /recurse:" + dir + System.IO.Path.PathSeparator + "*.cs";
results = codeProvider.CompileAssemblyFromFile (parameters, new string[1] { "fake.cs" });
Merci d'avance.