Nam*_* VU 6 msbuild msbuild-task
我需要编写一个自定义任务来打印所有已定义的属性(非保留属性).所以在我的C#代码中,我想访问MSBuild引擎的属性列表,我不知道如何.请帮忙.
小智 7
前面的示例将锁定您的项目文件.这可能会导致问题.例如,如果您在同一项目文件中多次调用该任务.这是改进的代码:
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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用.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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2787 次 |
| 最近记录: |