Je me bats avec cela depuis quelques jours et après des tonnes de recherches, je ne trouve pas le chemin que je devrais prendre. Ce que je veux faire est de mettre en place un projet MSBUILD qui va construire notre application .NET entière (constst de 8 solutions, et peut-être 250 projets répartis entre eux) avec un certain nombre de paramètres remplacés à partir des fichiers de projet individuels à faire un build de débogage pour moi-même.Comment remplacer le paramètre CopyLocal (Privé) pour les références dans .NET de MSBUILD
Spécifiquement je veux construire notre configuration de libération avec des optimisations off et des informations de débogage complètes/pdbs générées. Aussi, afin de réduire notre temps de construction actuellement très long je veux "copier local" (ou privé dans le fichier proj réel xml) faux pour chaque référence de chaque projet. Les premières choses ont été assez faciles, je peux facilement remplacer une propriété de niveau projet (vous pouvez même le faire à partir de la ligne de commande MSBuild en utilisant/p), mais ce que je n'arrive pas à comprendre, c'est comment surcharger une propriété sur une référence. J'ai essayé plusieurs choses que j'ai vues ici sur StackOverflow et sur le web, mais rien n'est encore une solution.
Je peux faire ce que je veux en modifiant Microsoft.Common.targets, en commentant le code dans la cible _CopyFilesMarkedCopyLocal ignore complètement la copie de ces fichiers. Mais je ne veux pas modifier ma configuration globale et le faire en toutes circonstances. J'ai créé mon propre fichier de cibles alternatives - qui fonctionne si je modifie un fichier de projet individuel pour le pointer - mais je ne peux pas comprendre comment spécifier cela pour être utilisé au plus haut niveau (mon fichier .proj qui construit juste toutes les 8 solutions). Ce serait génial si je pouvais en quelque sorte surcharger la cible _CopyFilesMarkedCopyLocal au plus haut niveau de sorte que si MS change le fichier de cibles par défaut, mon build n'est pas foutu, mais je n'arrive pas à comprendre comment faire ce travail non plus. La meilleure chose à faire serait de contourner les propriétés de niveau de référence comme vous pouvez projeter des propriétés de niveau, sans avoir à réécrire/surcharger les éléments de construction - mais je n'ai trouvé aucune information indiquant que cela est possible .
Merci d'avance pour toute aide à ce sujet.
P.S. Il m'est impossible de parcourir tous les fichiers de projets et de les changer; J'ai besoin d'une solution qui laisse le code existant en place tel quel.
Set CopyLocal = false peut causer différents problèmes pendant le temps de déploiement. Voir mon article de blog "Ne pas modifier" Copy Local "références de projet à false, à moins de comprendre les sous-séquences." (Http://geekswithblogs.net/mnf/archive/2012/12/09/do-not-change-copy-local -project-references-to-false-unless.aspx) –
Ne répond pas à votre question mais j'espère que MS peut résoudre ce problème de façon native: https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/ 13280400-améliorer-visual-studio-build-performance-for-large – Mark