如何在 MSBuild 中执行自定义 exe 以在属性评估阶段设置环境变量



我正在尝试从用户指定的位置目录导入一些 props 和目标文件。为了确定这个目录,我有一些自定义逻辑,我正在尝试找到一种在其中一个 props 中执行它的方法。我无法使用标准的 MSBUILD 属性函数来实现此目的。

我的最终目标是有一个小的UI,允许用户指定这个目录,并且这个目录的范围必须绑定到一个项目,即,可能有两个不同的项目指向解决方案中的两个不同目录

在摆弄完所有需求后再次调用构建脚本怎么样?每次调用MSBuild任务(将$(MSBuildProjectFile)作为Projects值)将再次调用生成文件,并且该调用将具有环境的新副本。

<Project DefaultTargets="EntryPoint" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">   
    <Target Name="SetProperties">
        <PropertyGroup>
            <PropA>Something</PropA>
        </PropertyGroup>
    </Target>
    <Target Name="EntryPoint">
        <MSBuild
            Projects="$(MSBuildProjectFile)"
            Properties="Configuration=$(Configuration);OutputPath=$(OutputPath);"
            Targets="SetProperties;EntryPoint"
            Condition="$(PropA) == ''"/>
        <Message
            Text="Everything is set!"
            Condition="$(PropA) != ''"/>
    </Target>
</Project>

此设置可以轻松扩展以执行一些Exec任务逻辑,并将该输出转发到对入口点的新调用。

最新更新