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 :

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;
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)...

Merci d'avance pour toute réponse !