Personnalisé objectif commun de construire une solution
J'ai créé une coutume commune de la cible "RealClean" qui supprimer tous les fichiers de sortie et les "intermédiaires" sortie " du répertoire. Je l'ai mis dans le Microsoft.Commun.les objectifs de fichier.
Quand je lance MsBuild sur mon csproj, tout est parfait.
Mais quand je lance MsBuild sur mon sln (qui vient de références une liste de csproj) j'ai l'erreur suivante
error MSB4057: The target "RealClean" does not exist in the project.
Voici la ligne de commande je entrer pour exécuter MsBuild
C:\Windows\Microsoft .NET\Framework\v3.5\MsBuild.exe /p:Configuration="Release";OutputPath="..\..\MSBuild.Referentiel.net35";nowarn="1591,1573" /t:RealClean mySolution.sln
Tout soupçon?
OriginalL'auteur Benjamin Baumann | 2010-08-03
Vous devez vous connecter pour publier un commentaire.
De travailler sur le fichier de solution, MSBuild crée une temporaire de projet MSBuild fichier ne contenant que certaines cibles comme les Construire et Propre. Si vous ne pouvez pas appeler votre cible personnalisée sur un fichier de solution.
Cela ne s'applique pas à n'importe quel Visual Studio génère, à droite?
OriginalL'auteur Julien Hoarau
J'ai eu le même problème mais ne veut pas modifier les choses à l'extérieur de l'arborescence des sources afin d'obtenir que cela fonctionne. L'ajout de fichiers à C:\Program les Fichiers... signifie que vous devez le faire manuellement sur chaque machine de dev pour obtenir le même comportement.
J'ai fait trois choses:
1) Créé un Custom objectifs de fichier qui-je importer dans chaque C# et/ou VB/F# projet dans ma solution par adjonction, pour chaque proj fichier:
2) Ajout d'une cible clean qui est appelé après que le réel Propre (à l'aide de la AfterTargets attribut de MSBuild 4.0):
3) Dans mon intégration continue MSBuild projet, j'ai vérifier et assurez-vous que tous les proj fichiers ont #1:
Ceci empêche les développeurs de l'oubli d'ajouter #1. Vous pouvez créer votre propre modèle de projet afin de s'assurer que les membres d'al, de nouveaux projets ont par défaut.
L'avantage de cette approche est la création d'une nouvelle arborescence des sources de l'enrôlement n'est pas quelque chose de plus que d'arriver à la source de courant de l'arbre. L'inconvénient est que vous devez modifier les fichiers de projet une fois lorsque vous les créez.
Je vous remercie. Si quoi que ce soit, la
AfterTargets
bien me mettre le droit cheminCela fait 7 ans depuis cette réponse a été publiée. Alors qu'il est bon, je me demande si il est désormais moins verbeux pour ce faire?
Il existe peut-être mais je n'ai pas vraiment nous VS ces jours-ci. Autant que je sache, le projet de système n'a pas changé de manière significative.
OriginalL'auteur Ade Miller
Madgnome est sans doute vrai. Mais je voulais ajouter que vous ne devriez pas être en train de modifier le Microsoft.commun.objectifs de fichiers. Si vous le faites vous risquez d'avoir un autre processus de construction de cette machine par rapport à ce que tout le monde est. Dans votre cas, vous pouvez avoir créé un nouveau fichier MSBuild avec juste la RealClean cible et l'a placé sur
C:\Program Files (x86)\MSBuild\v4.0\Custom.Après.Microsoft.Commun.objectifs
ou pour la version 32 bits
C:\Program Files\MSBuild\v4.0\Custom.Après.Microsoft.Commun.objectifs
et, en substance, que serait la même chose que de mettre ce fichier à l'intérieur de Microsoft.Commun.objectifs, sauf que vous n'avez pas à modifier ce fichier.
de toute façon pas à faire cette modification au niveau de la solution au lieu de la machine?
OriginalL'auteur Sayed Ibrahim Hashimi