0

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

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

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

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

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

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

提前致谢!

问候,罗伯特。哦。

4

1 回答 1

1

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

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

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

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

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

于 2009-10-20T14:11:37.440 回答