How to access the MSBuild 's properties list when coding a custom task?

前端 未结 2 1694
青春惊慌失措
青春惊慌失措 2020-12-10 16:26

I need to write a custom task that print all the defined properties (the non-reserved ones). So in my C# code, I wanna access to the properties list of MSBuild engine and I

2条回答
  •  南笙
    南笙 (楼主)
    2020-12-10 16:44

    Using .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;
            }
        }
    }
    

提交回复
热议问题