【问题标题】:MSBuild: Evaluating reserved properties with ReadLinesFromFileMSBuild:使用 ReadLinesFromFile 评估保留属性
【发布时间】:2009-10-20 11:18:28
【问题描述】:

我正在使用 MSBuild 自定义 Visual Studio、WiX、SandCastle 等项目的构建过程。 为了使其尽可能通用,我想使用定义一些“项目特定”设置的文本文件,例如应该从哪里加载文件,运行哪些自定义可执行文件等等。

文本文件可能如下所示: $(MSBuildProjectDirectory)....\Projects\Project1\bin\Release obj\$(Configuration)\Project1.Files.wxi -in *.dll -id TEST

每一行代表一个命令或文件。

在我的目标中,我使用 ReadLinesFromFile 来获取这些文件的内容。 到目前为止一切顺利!

问题是保留的属性,如'$(Configuration)、$(MSBuildProjectDirectory)' 这样做时没有评估,它们只是作为常规文本处理。

关于如何在不创建自定义任务的情况下评估这些 $-placeholders 有什么想法吗?

提前致谢!

问候, 罗伯特哦。

【问题讨论】:

    标签: msbuild properties evaluate reserved


    【解决方案1】:

    与其自己阅读行和解析所有内容,不如创建一个单独的文件(例如,命名为“local.build.config”),其中包含

    <PropertyGroup>
        <someproperty>$(MSBuildProjectDirectory)..\Projects\Project1\bin\Release</someproperty>
    </PropertyGroup>
    

    文件中的信息,然后在您的实际项目中导入文件,并在构建顶部使用如下行:

    <Import Project="local.build.config" Condition="Exists('local.build.config')"/>
    

    通过让 MSBuild 引擎做它最擅长的事情来防止重新发明轮子。

    【讨论】:

    • 感谢您的建议!
      我正在使用 ItemGroups 作为我的命令列表(每个命令一个项目),现在一切正常。
    • +1 这是一个好主意,但是为了让这个示例对我有用,我必须在 PropertyGroup 周围添加 schemas.microsoft.com/developer/msbuild/2003"> 。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多