Bonjour à tous,
j'ai besoin de créer un programme qui compile les fichiers C# contenus dans un répertoire, puis qui renvoie l'assembly généré (et qui créé une Dll). J'ai utilisé cette méthode :
Ce code marche bien, mais le problème c'est qu'à chaque exécution du programme, l'ensemble des fichiers est compilé depuis zéro ! Cela peut prendre un bout de temps si le dossier "script" contient de nombreux fichiers C#. Ce que je voudrais faire, c'est ne recompiler que les fichiers dont on a besoin, c'est-à-dire qui ont été modifiés depuis la dernière exécution du programme. J'avais pensé a sauvegarder les fichiers .obj générés, mais je n'ai pas trouvé comment faire, je ne sais même pas si c'est possible (et l'attribut KeepFiles du CompilerParameters ne donne rien d'intéressant)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 List<string> files = new List<string>( Directory.EnumerateFiles( "script", "*.cs" ) ); CodeDomProvider provider = CodeDomProvider.CreateProvider( "CSharp" ); CompilerParameters params_ = new CompilerParameters( References ); params_.GenerateExecutable = false; params_.GenerateInMemory = false; params_.OutputAssembly = @"script.dll"; params_.IncludeDebugInformation = true; CompilerResults results = provider.CompileAssemblyFromFile( params_, files.ToArray() ); return results.CompiledAssembly;
Merci d'avance pour toute réponse !
Partager