Je dois écrire une tâche personnalisée qui imprime toutes les propriétés définies (les non-réservées). Donc, dans mon code C#, je veux accéder à la liste des propriétés du moteur MSBuild et je ne sais pas comment. S'il vous plaît aider.Comment accéder à la liste de propriétés de MSBuild lors du codage d'une tâche personnalisée?
5
A
Répondre
3
En utilisant .NET 4:
using Microsoft.Build.Evaluation;
using Microsoft.Build.Utilities;
namespace MSBuildTasks
{
public class GetAllProperties : Task
{
public override bool Execute()
{
Project project = new Project(BuildEngine.ProjectFileOfTaskNode);
foreach (ProjectProperty evaluatedProperty in project.AllEvaluatedProperties)
{
if (!evaluatedProperty.IsEnvironmentProperty &&
!evaluatedProperty.IsGlobalProperty &&
!evaluatedProperty.IsReservedProperty)
{
string name = evaluatedProperty.Name;
string value = evaluatedProperty.EvaluatedValue;
}
// Do your stuff
}
return true;
}
}
}
6
L'exemple précédent vous interdira le dossier de projet. Cela peut causer des problèmes. Par exemple si vous appelez la tâche plusieurs fois dans le même fichier de projet. Voici le code amélioré:
using System.Xml;
using Microsoft.Build.Evaluation;
using Microsoft.Build.Utilities;
namespace MSBuildTasks
{
public class GetAllProperties : Task
{
public override bool Execute()
{
using (XmlReader projectFileReader = XmlReader.Create(BuildEngine.ProjectFileOfTaskNode))
{
Project project = new Project(projectFileReader);
foreach (ProjectProperty property in project.AllEvaluatedProperties)
{
if (property.IsEnvironmentProperty) continue;
if (property.IsGlobalProperty) continue;
if (property.IsReservedProperty) continue;
string propertyName = property.Name;
string propertyValue = property.EvaluatedValue;
// Do your stuff
}
return true;
}
}
}
}
Questions connexes
- 1. Lors de la création d'une tâche personnalisée, comment accéder à la verbosité MSBuild?
- 2. msbuild tâche personnalisée
- 3. Tâche MSBuild personnalisée avec dépendances
- 4. MSBuild get% (RecursiveDir) directive du paramètre de tâche personnalisée
- 5. Tâche personnalisée MSBuild dans IronPython/SharpDevelop 3.1
- 6. Propriétés de Msbuild
- 7. Ecriture d'une tâche MSBuild personnalisée contenant du code XML arbitraire
- 8. Utilisation de WriteCodeFragment MSBuild Tâche
- 9. Erreur lors de l'exécution de la tâche planifiée à partir du script MSBUILD
- 10. Comment obtenir une sortie de construction, liste d'erreurs, lors de l'exécution de Project.Build() dans une tâche de construction personnalisée?
- 11. Comment supprimer la sortie de l'enregistreur lors de l'utilisation de la tâche <MSBuild ...>?
- 12. Comment résoudre: La tâche MSBuild personnalisée nécessite un assemblage en dehors d'AppBase
- 13. Comment obtenir la valeur d'une propriété msbuild à partir d'une tâche personnalisée?
- 14. Comment écrire une sortie sur la console à partir d'une tâche MSBuild personnalisée?
- 15. Test d'unité MSBuild Tâche personnalisée sans l'erreur "Tâche tentée de se connecter avant son initialisation"
- 16. Transmission d'une valeur de groupe de propriétés d'une tâche MsBuild à une autre
- 17. Tâche SFTP pour msbuild?
- 18. Développement piloté par test d'une tâche MSBuild
- 19. Génération de code dans une tâche MSBuild
- 20. MSBuild AspNetcompiler tâche
- 21. MSBuild écho tâche?
- 22. Comment accéder à ConfigurationSection personnalisée à partir de la bibliothèque?
- 23. MSBuild Tâche de lire la version de la DLL
- 24. Problème lors de l'utilisation de la tâche de copie de MSBuild (VS2005TS Team Build)
- 25. MSBuild XmlMassUpdate Tâche
- 26. Tâche Ant personnalisée requise?
- 27. MSBuild conditionals en fonction de paramètres de la tâche
- 28. Comment passer correctement les propriétés msbuild à un autre script msbuild?
- 29. Comment obtenir une tâche MSBuild pour générer des documents XML lors de la création d'une solution?
- 30. Problèmes avec le codage de panneau personnalisé - impossible de comprendre comment accéder aux propriétés des enfants