7
votes

Comment construire du projet dépendant d'abord avec Msbuild

Je viens de commencer à regarder dans Msbuild, car je veux faire mes propres scripts de construction. Pour l'instant, je suis capable de créer des scripts de construction qui ne compile qu'un seul projet, mais comment gérer les dépendances?

Par exemple, et si j'ai deux projets qui se développent avec ces deux scripts Msbuild?

  1. projecta.xml
  2. projectb.xml

    Comment puis-je dire à Msbuild que lorsque j'exécute le projet projecteur.xml qu'il devrait d'abord exécuter projecta.xml?

    J'ai beaucoup googlé à ce sujet, mais il ne semble pas obtenir quelque chose d'un démarreur comme moi. Je serais plus qu'heureux d'un lien avec un article qui décrit ceci, ou peut-être juste un petit exemple de code.

    La raison pour laquelle je veux que ce contrôle soit à cause d'une bibliothèque que je bâche. La bibliothèque est composée de plusieurs projets. Un développeur devrait pouvoir tirer le code source de la bibliothèque et construire uniquement les bibliothèques qu'il souhaite.

    En fait, je veux pouvoir construire des modules .NET des différents projets. C'est pourquoi je veux pouvoir exécuter un script Msbuild personnalisé.


0 commentaires

4 Réponses :


7
votes

Si vous créez une solution avec les deux projets, vous pouvez cibler le fichier .sln avec MSBuild, plutôt que de construire directement les projets, il devrait s'occuper des dépendances du projet :)

mais c'est Si vous utilisez des projets standard .CSProj ...

OK, j'ai regardé un projet que je travaille sur, et c'est comme ça: xxx

Et voici un page MSDN sur les références. Faites défiler jusqu'à ce que vous trouviez projectreference ...


5 commentaires

Suite à ma réponse, vous pourriez peut-être créer deux projets avec une personne à charge de l'autre et voir les fichiers .SLN et .CSPROJ à ressembler, peut-être que cela vous indiquera comment faire les dépendances dans vos propres scripts personnalisés.


Suite à mon dernier commentaire, je l'ai fait pour vous et édité ma réponse avec les détails :)


+1 pour suggérer le fichier .sln. S'il n'y a aucune raison que vous ne voulez pas que VisualStudio gère l'ordre de vos constructions ne réinventez pas la roue.


J'ai mis à jour ma question pour expliquer pourquoi je veux pouvoir personnaliser le processus de construction. Je vais regarder dans la cible de projecteur !! Merci de partager cela.


J'ai voté cela en raison de "regarder dans le fichier de projet". Ceci est une ressource utile que je n'ai pas réalisée à utiliser. Merci pour ça.



0
votes

Vous n'avez pas besoin de construire à l'aide du SLN. Si vous utilisez des références de projet dans votre CSPROJ, l'ordre de dépendance est pris en charge par MSBuild. Essayez-le. Automatiquement. Vous n'avez pas besoin de trier l'ordre de dépendance dans votre script MSBUILD.


1 commentaires

Cela ne fonctionne pas toujours. Lorsque j'ai converti une solution de VS 2010 à VS 2012, le projet dépendant ne reçoit jamais la construction de Msbuild.exe (mais cela fait dans VS 2012). Cependant, ajouter un indice de projet comme décrit par "AppClay", cela fonctionne dans les deux maintenant.



5
votes

i Configurez mes scripts de construction afin que j'ai quelques cibles communes qui ne font rien, mais utilisez dépendsontargets pour configurer les dépendances du projet et exécuter la construction. xxx


2 commentaires

J'ai accepté cela à cause de l'indice de tâche Msbuild. C'est exactement ce que je veux utiliser. Dans cette tâche, je peux faire référence à un autre projet à construire. Merci pour ça.


J'aimerais construire des projets sans avoir à les inclure dans ma solution, est-ce possible?



2
votes

dans Numéro de MsBuild # 2887 Une situation similaire est discutée. Le fil révèle également un lien vers officiel projecteur protocole .


1 commentaires

Merci pour ce lien! J'ai eu le même problème que discuté là-bas ... C'est génial d'avoir une solution une dernière.