Necesito escribir una tarea personalizada que imprima todas las propiedades definidas (las no reservadas). Entonces, en mi código C#, quiero acceder a la lista de propiedades del motor MSBuild y no sé cómo. Por favor ayuda.¿Cómo acceder a la lista de propiedades de MSBuild al codificar una tarea personalizada?
5
A
Respuesta
3
El uso de .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
El ejemplo anterior se bloqueará el archivo del proyecto. Esto puede causar problemas. Por ejemplo, si llama a la tarea varias veces en el mismo archivo de proyecto. Aquí está el código mejorado:
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;
}
}
}
}
Cuestiones relacionadas
- 1. tarea personalizada msbuild
- 2. Tarea personalizada de MSBuild con dependencias
- 3. ¿Cómo escribo la salida a la consola desde una tarea personalizada de MSBuild?
- 4. Propiedades de Msbuild
- 5. Pasar el valor del grupo de propiedades de una tarea de MsBuild a otra
- 6. ¿Cómo accedo al contexto actual del proyecto dentro de una tarea personalizada?
- 7. groovy: ¿Cómo acceder al archivo de propiedades?
- 8. Prueba unitaria Tarea personalizada MSBuild sin "Tarea intentó iniciar sesión antes de que se inicializara" error
- 9. Cómo pasar propiedades de msbuild a otro script de msbuild correctamente?
- 10. Cómo solucionar: tarea de MSBuild personalizada que requiere ensamblaje fuera de AppBase
- 11. Añadir MSBuild dosificado salida de la tarea como metadatos elemento
- 12. ¿Cómo pruebo la unidad de una tarea personalizada?
- 13. ¿Tarea SFTP para msbuild?
- 14. ¿Cómo cambiar la verbosidad de la tarea MSBuild?
- 15. MSBuild XmlMassUpdate Tarea
- 16. ¿Cómo usar la tarea Zip de la extensión MSBuild?
- 17. MSBuild - Establecer propiedades para la solución
- 18. ¿Cómo adjuntar una tarea personalizada para ejecutar antes de la tarea de prueba en sbt?
- 19. Usando la "Herramienta personalizada" de Studio en MSBuild
- 20. Recopilación de salidas de una tarea ejecutiva de MSBuild
- 21. Referencias de propiedades de MSBuild
- 22. propiedades de sobrescritura con MSBuild
- 23. Enlazando WPF ComboBox a una lista personalizada
- 24. Lanzar un error en una tarea de MSBuild
- 25. Ensamblaje personalizado de bloqueos de tarea de MSBuild
- 26. ¿Cómo se escribe una tarea de MSBuild para admitir la cancelación?
- 27. ¿Cómo se obtiene el directorio de proyecto actual del código C# cuando se crea una tarea personalizada de MSBuild?
- 28. Lista/Recolección de referencias a las propiedades
- 29. Error de segmentación al acceder a una variable de instancia (firstprivate implícita) a través de la tarea de Openmp
- 30. ¿Devuelve el resultado de una tarea de MsBuild?