我找到了许多有关为Web部署提供多个ASP.NET配置文件的信息。但是,我仍然不确定我能否完成我想要完成的任务。
基本上,我正在处理的网站可以部署到三个不同的网站。根据部署到的站点,需要更改配置设置。我想要做的是为每个可能的配置(完整的web.config文件)配置文件,然后能够告诉部署构建哪个配置文件用于特定部署(如果需要,我可以手动编辑)。 / p>
是否存在指向不同.config文件这样简单的事情,或者我是否需要做更复杂的事情?
编辑:我有一个特别关注的问题是我还需要在system.net中设置邮件设置等等。所以,我不是只想 覆盖appSettings。
由于
答案 0 :(得分:4)
任何配置部分(例如<smtp>
)都可以“外部化”,例如存储在外部文件中。
除了file=
上的<appSettings>
声明(仅适用于应用设置:-()时,它不是“额外”设置 - 您只需将配置系统指向外部文件。< / p>
所以你可以在你的app.config / web.config中找到它:
<system.net>
<mailSettings>
<smtp configSource="smtp.test.config" />
</mailSettings>
</system.net>
这在您的smtp.test.config
:
<?xml version="1.0" encoding="utf-8" ?>
<smtp>
<network host="smtp.test.com" port="244" userName="test" password="secret" />
<specifiedPickupDirectory pickupDirectoryLocation="C:\temp\mails"/>
</smtp>
这适用于.NET 2.0(甚至可能是1.x),它适用于每个配置部分 - 但不适用于配置部分组,如{{1 }}
当然,您现在可以创建其他配置文件,例如<system.web>
等等,现在您的问题已经减少到替换web.config中的一行。
您可以使用安装脚本,XML预处理器甚至是人工干预来完成此操作。
它并没有像.NET 4 and the web.config transformations那样完全解决问题,但这是一步和一点帮助。
答案 1 :(得分:1)
在您的主web.config
上,将以下属性添加到appSettings
<appSettings file="Web.site1.config">
然后,asp.net将这两个文件视为一个。您可以修改web.config
以包含其他外部文件,具体取决于网站。
答案 2 :(得分:0)
您可以在.Net Framework 4中执行此操作.ScottGu在其recent talk in Sweden中显示了它的快速演示。在他的例子中,他有分期,制作等,每个文件都有(可能)不同的内容。