XML文件替换程序? (web.config / WDP相关)

时间:2009-08-28 13:28:34

标签: xml web-config

我在VS 2008的Web部署项目中使用web.config替换代码遇到了很多限制。其中一些似乎是:

  • 不能更换章节组,只能删除章节。现在,如果我只知道哪些部分。
  • 替换后似乎有一些要求。这不仅仅是一个“愚蠢”的文本替代品。这使得很难替换web.config的自定义添加(似乎支持这些部分的文件需要在GAC或类似的东西中)。

因此,想一想简单地编写我自己的替换程序(“笨”)会更容易,但没有这些限制。所以在出发之前,我想知道是否还有其他的东西:

  • 适用于XML文件
  • 给出一个INI文件,如键/值列表
  • 可以替换原始XML文件中的元素,文本内容是从INI文件中的值指示的文本文件中加载的。

或者我在这里做错了什么? WDP的配置替换代码似乎相当无用(并且很难找到文档)。

2 个答案:

答案 0 :(得分:1)

根据我的经验,我的项目中有三个文件比较容易,比如Web-Release.configWeb-Debug.configWeb.config,然后我修改项目文件(这只是一个MSBuild脚本)在构建过程中通过-Debug复制-ReleaseWeb.config文件的内容。令人高兴的是,这种类型的行为显然是内置于Visual Studio 2010中,但是目前只需右键单击项目文件,卸载它,然后编辑文件来执行切换器,就可以轻松添加:

<Target Name="AfterBuild">
    <Copy SourceFiles="Web-Debug.config" DestinationFiles="Web.config" ContinueOnError="false" Condition="'$(Configuration)' == 'Debug'" />
    <Copy SourceFiles="Web-Release.config" DestinationFiles="Web.config" ContinueOnError="false" Condition="'$(Configuration)' == 'Release'" />
</Target>

我过去使用的另一个选项是为此XML file merger构建MSBuild任务。它对于生成为具有Windows控制台应用程序主机(用于调试)和Windows服务主机(用于生产)的服务器共享的App.config文件很有用:大多数常见设置都存在于{{1}中在共享项目中,每个主机项目都有App.config定义了其他设置,然后我编辑每个主机项目的MSBuild项目来运行我的自定义任务,将两个App.config合并为一个大App.config。但这可能有点过头了。

我认为如上所述,为每个部署方案创建一个App.config文件会更容易。如果有许多共同点,那么在元素上使用.config属性可以减少重复。

希望这有助于解决问题的本质,尽管它可能并不完全符合您的要求。

答案 1 :(得分:0)

免责声明:我打算通过谈论我为此而写的程序来发送垃圾邮件

我已经写了一些东西:dashy。设置(可能取决于您的环境)略有参与,但它旨在解决您所遇到的问题 - 管理不同环境的配置(以及其部署)。

或者,在破解之前,我只是为每个环境使用了具有特定.properties的nant任务,并在构建后执行相关的任务。