我在VS 2008的Web部署项目中使用web.config替换代码遇到了很多限制。其中一些似乎是:
因此,想一想简单地编写我自己的替换程序(“笨”)会更容易,但没有这些限制。所以在出发之前,我想知道是否还有其他的东西:
或者我在这里做错了什么? WDP的配置替换代码似乎相当无用(并且很难找到文档)。
答案 0 :(得分:1)
根据我的经验,我的项目中有三个文件比较容易,比如Web-Release.config
,Web-Debug.config
和Web.config
,然后我修改项目文件(这只是一个MSBuild脚本)在构建过程中通过-Debug
复制-Release
或Web.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任务,并在构建后执行相关的任务。