将自定义类型的变量传递给自定义MSBuild任务

本文关键字:自定义 MSBuild 任务 变量 类型 | 更新日期: 2023-09-27 18:14:27

我已经开发了名为ExportSolution的自定义MSBuild任务,我需要将自定义enum PackageType值传递给它。

PackageType很简单:
public enum PackageType
{
    Managed,
    Unmanaged,
    Both
}

MSBuild脚本也很简单:

<Target Name="ExportSolution" DependsOnTargets="BuildTasksDll">
    <Message Text="Exporting solution '$(SolutionName)' to '$(SolutionPath)'" />
    <ExportSolution SolutionName="$(SolutionName)" PackageType="Both"></ExportSolution>
</Target>

然而,运行脚本的目标,我收到以下错误信息:

错误MSB4030: "Both"是"ExportSolution"任务的"PackageType"参数的无效值。参数"PackageType"的类型为"Tasks.Common.PackageType"。

在哪种格式我应该传递值到PackageType的变量使这段代码工作?

将自定义类型的变量传递给自定义MSBuild任务

我将像这样重构Enum。

public enum PackageType
{
    Managed = 0,
    Unmanaged = 1,
    Both = 2
}

然后我会编辑我的构建脚本,使用整数作为选择方法。

 <ExportSolution SolutionName="$(SolutionName)" PackageType=2></ExportSolution>

这可能不是你想要的解决方案,但它可能会满足你的需要。