MSBuild:使用ReadLinesFromFile评估保留属性

MSBuild:使用ReadLinesFromFile评估保留属性,msbuild,properties,evaluate,reserved,Msbuild,Properties,Evaluate,Reserved,我正在使用MSBuild自定义Visual Studio、WiX、SandCastle等的生成过程。。。项目。 为了尽可能保持通用性,我想使用文本文件定义一些“特定于项目”的设置,比如文件应该从哪里加载,运行哪些自定义可执行文件等等 文本文件可能如下所示: $(MSBuildProjectDirectory)…\Projects\Project1\bin\Release obj\$(配置)\Project1.Files.wxi-in*.dll-id测试 每行代表一个命令或文件 在我的目标中,我使

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

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

每行代表一个命令或文件

在我的目标中,我使用ReadLinesFromFile获取这些文件的内容。 到目前为止还不错

问题在于,执行此操作时,诸如“$(配置),$(MSBuildProjectDirectory)”之类的保留属性不会被计算,它们只是作为常规文本处理

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

提前谢谢

问候,,
哦。

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

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

$(MSBuildProjectDirectory)…\Projects\Project1\bin\Release
文件中的信息,然后在实际项目中导入文件,并在生成的顶部显示一行,如下图所示:

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


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

谢谢您的建议
我在命令列表中使用了ItemGroups(每个命令一个项),现在一切都正常了。+1这是个好主意,但为了让示例对我起作用,我必须在PropertyGroup周围添加一些内容。