我可以使用msbuild更新非xml配置文件吗?
我有一个配置文件,它有一个旧的样式格式(没有xml) 根据我发布的系统,我希望在发布后更新和更改值= 这在MSbuild中是可能的吗?你能告诉我怎么做吗我可以使用msbuild更新非xml配置文件吗?,msbuild,configuration-files,Msbuild,Configuration Files,我有一个配置文件,它有一个旧的样式格式(没有xml) 根据我发布的系统,我希望在发布后更新和更改值= 这在MSbuild中是可能的吗?你能告诉我怎么做吗 我知道如何使用xml配置文件的xml poke来实现这一点。没有什么比问一个问题来帮助您回答更重要的了 我要这样做 <Target Name="UpdateConfig"> <CreateProperty Value="..\config.cfg"> <Output TaskParamet
我知道如何使用xml配置文件的xml poke来实现这一点。没有什么比问一个问题来帮助您回答更重要的了 我要这样做
<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并不是这样的
有更好的建议吗?编写自己的MSBuild任务
然后在MSBuild脚本中引用它。您可以设置模板系统并使用MSBuild扩展包中的detokenise。请参阅此处的文档: 这意味着您不必一直编写上述自定义目标 所以你应该:
<ItemGroup>
<Transforms Include="$(ReleasePath)\Yourtemplates\**"/>
</ItemGroup>
<MSBuild.ExtensionPack.FileSystem.Detokenise
TaskAction="Detokenise"
TargetFiles="%(Transforms.FullPath)"/>
您可以对其进行模板化,并使用msbuild扩展包中的detokenise。这意味着您不必一直编写上述自定义目标。看起来是一个很好的解决方案。。。回答一个问题,我就投你一票!我将使用Xml任务编写一些基本的Xml,然后使用xsl对其进行转换。这并不是一个比“写出一个文本文件”更好的主意,但在一个文本文件中一行一行地写……在2013年,我觉得不对。只是一个建议,而不是想打架:我在这篇文章中回答了一些基本的xml。xslt给了我荨麻疹:)不过谢谢你的想法!我越来越少地使用它,但对于像这样的小事情……我仍然擅长使用它。除了简单的事情,它很难回去维护。因此,我的规则是,如果我不能在一小时内重新理解它,那么xsl可能太复杂了。我喜欢这个想法的原因是,这将是一个学习如何创建自己的MSBuild任务的好方法。它很小,可以咬掉。我认为这可能是正确的做事方式,尽管我把它作为我的黑客方式,直到我需要重新审视这个问题
<ItemGroup>
<Transforms Include="$(ReleasePath)\Yourtemplates\**"/>
</ItemGroup>
<MSBuild.ExtensionPack.FileSystem.Detokenise
TaskAction="Detokenise"
TargetFiles="%(Transforms.FullPath)"/>