Ma solution se compose de plusieurs bibliothèques/assemblages natifs, d'enveloppes C++/CLI et de bibliothèques/assemblages managés. Les projets d'enveloppe font référence à différents projets DLL natifs. Chaque fois que je change un détail d'implémentation dans un fichier .cpp d'une dépendance native, tous les projets CLI/.NET sont reconstruits (pas seulement liés, mais recompilés). Cela se produit également dans la configuration Debug (pas d'optimisation globale du programme). Y a-t-il une raison à ce comportement? Étant donné que la solution est assez volumineuse, la reconstruction prend beaucoup de temps, il serait donc préférable que VS évite toute reconstruction inutile.
Réponse
Trop de publicités?Ceci est un comportement attendu. Les assemblies .NET "dépendent" du DLL non géré et lorsque le DLL change, ils le détectent et se reconstruisent. L'unité de compilation d'un projet C++ non géré est un fichier .cpp. L'unité de compilation d'une assembly .NET est l'ensemble de l'assembly. Il n'y a aucun moyen de recompiler juste un fichier .cs (ou C++ managé).
Vous pouvez contourner cela en utilisant ::GetProcAddress() pour obtenir des pointeurs de fonction vers les opérations dans les DLL non gérés. Ensuite, vous pouvez supprimer la dépendance de l'assembly .NET sur le fichier .lib des DLL non gérés et il ne se recompilera plus à chaque fois que le .lib change.