簡體   English   中英

將屬性(名稱=值)寫入MSBuild項目中的文件

[英]Write Properties (name=value) to a file from an MSBuild project

對於MSBuild項目,我想輸出某種.config文件,該文件將沿生成的二進制文件重新分配,因此構建時使用的參數可以由二進制的用戶以編程方式檢查。

輸出文件格式:

PropertyName1=ValueA
PropertyName2=ValueB
...

理想情況下,要寫入的屬性列表只包含其名稱。 也許喜歡:

<ItemGroup>
  <MyExposedDictionary Include="Configuration" />
  <MyExposedDictionary Include="Platform" />
  <MyExposedDictionary Include="PropertyName1" />
  ...
</ItemGroup>

使用MyExposedDictionary作為賦予某些DotConfigFileWriter任務的參數,以及目標文件的路徑。

我發現了幾種值寫入文件的方法,包括一個帶有一些C#代碼的子目標,但我是MSBuild的新手,我不知道如何將這些需求合並到一個Target來實現它可重復使用。

我不確定你的問題在哪里。 我有一個類似的要求,即剛編譯的程序創建一個文件。 我編輯了項目的屬性:在build events輸入一個Post-build action

REM create special file
"$(ProjectDir)$(OutDir)MyProgram.exe" /WriteFile MyFile.xml

當然,您還必須更改程序,以便在使用該參數調用時執行正確的操作(並在完成該操作后停止 - 不顯示GUI或作為Windows服務啟動)。

如果有人來這里有相同的要求,這就是我最終的結果。 對結果並不滿意,因為我希望有一些更通用的東西,但至少它能完成這項工作,並在我的項目中融合得很好:

<Target Name="WriteBuildProperties" BeforeTargets="PreBuildEvent">
  <WriteLinesToFile File="$(DotConfigFile)" Overwrite="true" Lines="" />
  <WriteLinesToFile File="$(DotConfigFile)" Lines="ProjectName=$(ProjectName)" />
  <WriteLinesToFile File="$(DotConfigFile)" Lines="Configuration=$(Configuration)" />
  ...
</Target>

如果有人碰巧有一個更優雅的解決方案,請跳進去!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM