2009-10-20 140 views
0

我使用MSBuild自定義Visual Studio,WiX,SandCastle,...項目的構建過程。 爲了保持它儘可能通用,我想使用文本文件來定義一些「特定於項目」的設置,例如應該從哪裏加載文件,要運行哪些自定義可執行文件等等。MSBuild:使用ReadLinesFromFile評估保留屬性

的文本文件看起來是這樣的: $(MSBuildProjectDirectory).... \項目\ PROJECT1 \ BIN \發佈OBJ \ $(配置)\ Project1.Files.wxi -in * .DLL -id TEST

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

在我的目標裏面我使用ReadLinesFromFile來獲取這些文件的內容。 到目前爲止好!

問題在於,像'$(Configuration),$(MSBuildProjectDirectory)'這樣的保留屬性在這樣做時未被評估,它們只是作爲常規文本處理。

關於如何在不創建自定義任務的情況下評估這些$ -placeholder的任何想法?

在此先感謝!

Regards, robert.oh。

回答

1

而不是讀的線條和解析自己的一切,爲什麼不創建一個單獨的文件(命名,例如,「local.build.config」)擁有該文件中的

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

信息,並那麼在實際的項目做一個行的文件的導入像這樣在你構建的頂部:

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

防止通過讓MSBuild引擎做它最好重新發明輪子。

+0

感謝您的諮詢!
我使用ItemGroups作爲我的命令列表(每個命令一個項目),現在一切正常。 – 2009-10-21 10:18:14

+0

+1這是個好主意,但爲了讓我的例子爲我工作,我必須在PropertyGroup中添加。 – 2012-04-10 01:22:16