2013-03-26 84 views
2

我有有一老stylee格式的配置文件(無XML)我可以使用msbuild更新非xml配置文件嗎?

dbpath=C:\Program Files\Mongodb\Data\Db 
journal=true 
smallfiles=true 

根據我發佈過的系統,我想更新和=後更改值上

這是可能的與MSbuild?你能告訴我如何?

我知道如何使用xml poke for xml配置文件來做到這一點。

+0

我會使用XML任務編寫一些基本xml,然後使用xsl進行轉換。這並不是一個好主意,然後寫出一個文本文件的想法,但在文本文件中寫入1行1 ...在2013年我感覺不對。只是一個建議,不尋找戰鬥:O – granadaCoder 2013-03-26 13:31:49

+0

看看我的回答(不是我的問題)在這個職位寫一些基本的XML。 http://stackoverflow.com/questions/13867117/how-to-add-a-linked-file-to-a-csproj-file-with-msbuild-3-5-framework – granadaCoder 2013-03-26 13:33:19

+0

xslt給我蜂巢:)謝謝你這個想法雖然! – Loofer 2013-03-26 13:33:52

回答

1

您可以設置一個模板系統並使用msbuild擴展包中的解除錯誤。在這裏看到的文檔:http://www.msbuildextensionpack.com/help/4.0.6.0/Index.html

這將意味着你就不必編寫自定義的目標像上面所有的時間

所以你幾乎有:

<ItemGroup> 
     <Transforms Include="$(ReleasePath)\Yourtemplates\**"/> 
    </ItemGroup> 


    <MSBuild.ExtensionPack.FileSystem.Detokenise 
     TaskAction="Detokenise" 
     TargetFiles="%(Transforms.FullPath)"/> 
+0

我認爲這可能是正確的做事方式,雖然我把它留在我的黑客的方式,直到我需要重新審視問題 – Loofer 2013-03-26 14:08:20

1

沒有什麼比問一個問題來幫助你回答它!

我要做到這一點

<Target Name="UpdateConfig"> 
    <CreateProperty Value="..\config.cfg"> 
     <Output TaskParameter="Value" PropertyName="path" /> 
    </CreateProperty> 

    <Message Text="LogFilePath=$(LogFilePath)"/> 

    <FileUpdate Files="$(path)" 
     Regex="logpath=.*" 
     ReplacementText="logpath=$(LogFilePath)" /> 
</Target> 

這不是我所說的優雅,但我沒有找到很多關於MSBuild的是!

有更好的建議嗎?

+0

你可以對它進行模板化,並使用msbuild擴展包中的去話權限。這意味着你不必像往常一樣編寫自定義目標。 – 2013-03-26 12:48:02

+0

看起來像一個很好的解決方案...做出答案,我會upvote你! – Loofer 2013-03-26 13:33:08

相關問題