C# 读取MSBuild任务中的生成参数

C# 读取MSBuild任务中的生成参数,c#,msbuild,C#,Msbuild,我正在尝试创建一些工具,这些工具需要在目标项目构建完成后运行脚本。 为此,在我的工具中,我还创建了MSBuild任务 我的问题是,我需要知道任务中的ConfigurationName和TargetPath变量是什么 public class MyTask : Task { public override bool Execute() { var output = // TargetPath variable var configuration =

我正在尝试创建一些工具,这些工具需要在目标项目构建完成后运行脚本。 为此,在我的工具中,我还创建了MSBuild任务

我的问题是,我需要知道任务中的ConfigurationName和TargetPath变量是什么

public class MyTask : Task
{
    public override bool Execute()
    {
        var output = // TargetPath variable
        var configuration = // ConfigurationName variable
        RunScript(output, configuration);
        return true;
    }
}

如何在MSBuild任务中读取生成变量?

最可靠的方法是传递这些属性 将任务作为其自身属性导入到任务中:

public class MyTask : Task
{
    [Required]
    public string ConfigurationName { get; set; }
    [Required]
    public string TargetPath { get; set; }

    public override bool Execute()
    {
        var output = this.TargetPath; // TargetPath variable
        var configuration = this.ConfigurationName; // ConfigurationName variable
        RunScript(output, configuration);
        return true;
    }
}
您可以将它们声明为“必需”(请参见上面的
[required]
属性),也可以不声明。根据你的需要

然后从.targets或.*proj文件中相应地设置它们:

<MyTask
    Configuration="$(Configuration)"
    TargetPath="$(... whatever ...)"
/>