ASP.NET应用程序中用于开发和生产的不同配置文件

ASP.NET应用程序中用于开发和生产的不同配置文件,asp.net,configuration,web-config,Asp.net,Configuration,Web Config,在我正在进行的一个项目中,我们有一个包含三个配置文件的web应用程序; Web.Config Web.Config.TestServer Web.Config.LiveServer 当我们发布到测试服务器时,Web.Config被重命名为Web.Config.Development,Web.Config.TestServer被重命名为Web.Config,使该配置对应用程序处于活动状态 将三个非常相似的配置文件保持最新是相当繁重的,并且该系统用于本项目中的许多应用程序;不仅仅是网站 配置上的差异

在我正在进行的一个项目中,我们有一个包含三个配置文件的web应用程序; Web.Config Web.Config.TestServer Web.Config.LiveServer

当我们发布到测试服务器时,Web.Config被重命名为Web.Config.Development,Web.Config.TestServer被重命名为Web.Config,使该配置对应用程序处于活动状态

将三个非常相似的配置文件保持最新是相当繁重的,并且该系统用于本项目中的许多应用程序;不仅仅是网站

配置上的差异通常是本地目录或路径、URL、IP、端口号和电子邮件地址


我正在寻找一种更好的方法。

如果混合中有db服务器,可以创建一个包含配置、属性名和属性值的表,然后只需更改web.config中的一个值,即配置名(dev、test、prod)


如果每个配置有不同的dbs,那么唯一不同的是连接字符串。

虽然您的方法看起来很乏味,但我发现它是最好的方法

我曾经将所有配置保存在一个web.config文件中,并简单地将“生产”部分注释掉

在这之后不久,我不得不做一个“混合”测试,其中我的查找数据来自生产服务器,但新数据被插入到测试数据库中。在这一点上,我不得不开始对配置块的哪些部分进行注释/取消注释,这成了一场噩梦

类似地,我们让服务器管理员进行从测试到生产的实际迁移,而他们中的大多数人对.NET不够流利,不知道如何管理web.config文件。对他们来说,只需查看.test或.prod文件并将正确的文件迁移到上面,就容易得多了

您可以使用数据库之类的东西来存储所有配置,但随后您将进入另一个抽象层,您必须在上面管理它


一旦您掌握了如何设置两个(或三个)配置文件的诀窍或模板,管理它们就变得容易多了,您可以修改测试服务器配置以进行一些独特的测试,而无需太多麻烦。

使用配置转换,这里有一个关于它的博客

基本上,您可以创建名为web.{build configuration}.config的目标。在每个目标文件中编写转换,您可以在其中添加、删除和修改节点和属性。例如

web.staging.configss

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
     <connectionStrings> 
        <add name="personalDB" 
          connectionString="Server=StagingBox; Database=personal; User Id=admin; password=StagingPersonalPassword" 
          providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)" /> 
        <add name="professionalDB" 
         connectionString="Server=StagingBox; Database=professional; User Id=professional; password=StagingProfessionalPassword" 
         providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)"/> 
       </connectionStrings> 
</configuration>
web.staging.configss

然后通过调用
MSBuild{project file}/t:TransformWebConfig/p:Configuration=Staging

sooo来执行转换,这里的答案是什么?@datagrade虽然这个答案已经四年了,但我想说,如果你不能使用Web.config转换,为不同的环境保留单独的文件,并将适当的文件迁移出去,作为部署计划的一部分。