Asp.net 基于环境构建.NETWeb应用程序

Asp.net 基于环境构建.NETWeb应用程序,asp.net,.net,Asp.net,.net,我的.Net web应用程序有3个环境,即开发、发布和生产环境,每个环境都有自己的配置和项目设置文件 假设不同环境的设置和配置文件位于一个系统中,我想创建一个小脚本或应用程序,开发人员只需在其中提到环境类型,并加载相关的设置和配置文件,然后构建应用程序 有人能指导我吗?你可以创建配置转换,并在发布配置文件中使用它们。对于每个配置(调试、发布、YourOwnConfig…),都会有一个按其配置命名的文件(Web.Debug.config、Web.Release.config、Web.YourOwn

我的.Net web应用程序有3个环境,即开发、发布和生产环境,每个环境都有自己的配置和项目设置文件

假设不同环境的设置和配置文件位于一个系统中,我想创建一个小脚本或应用程序,开发人员只需在其中提到环境类型,并加载相关的设置和配置文件,然后构建应用程序


有人能指导我吗?

你可以创建配置转换,并在发布配置文件中使用它们。对于每个配置(调试、发布、YourOwnConfig…),都会有一个按其配置命名的文件(Web.Debug.config、Web.Release.config、Web.YourOwn.config…)

诀窍在于,您有一个完整的配置文件,即原始的Web.config,转换只是通过XSLT转换语法提到了与此文件的区别(一旦创建了新的转换,文件本身就会有一些示例显示语法)。例如,为appSettings键添加变换如下所示:

<configuration>
    <appSettings>
        <add key="ClientSessionTimeout" value="100"
            xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    </appSettings>
</configuration>
差异将是例如数据源设置、其他特定于环境的设置,如web服务的URL等

要创建这些,请选择一个配置,例如“Debug”,然后右键单击Web.Config文件,您将看到一个上下文菜单项“Add Config transform”-单击它,Web.Debug.Config转换文件将在Web.Config下面创建。如前所述进行调整;将整个键或设置复制到转换文件,然后添加适当的
xdt
属性,如上所示

最后,您可以使用“发布”功能(右键单击web项目以选择它)。将打开一个向导,您可以在其中设置发布配置文件。在这里,您可以提到一个配置,比如“调试”、“发布”以及您之前创建的配置

文件发布将把部署web项目所需的文件放在一起,并通过应用适当的转换文件(例如web.Release.Config)另外执行web.Config的转换。发布的配置将命名为“Web.config”,并包含所有更改


对于故障排除,以及有关该主题的更多信息,我推荐以下链接:


另请注意Stack overflow的侧栏,其中显示了更多相关链接。

请先问自己这些问题。答:除了这个项目(Java-.Net–iOs Android–多语言/操作系统使用)之外,我的其他项目的开发技术是什么。B:您预计在未来几年内会生成多少不同的最终状态二进制文件或项目(5个或500个)。C:我是否已经购买了隐含的基础设施,如AWS、Azure或Always on Perm)。D:我的源代码管理选择是灵活的还是意味着一种特定的体系结构技术?首先回答这些问题。谢谢你的回答。这真的很有帮助。但这仅限于处理多个web.config文件。我还需要处理多个应用程序设置。如何基于环境加载应用程序?如果您的web项目中有
应用程序设置
,它们也存储在
web.config
文件中。区别在于应用程序设置也处理复杂的数据类型,而不仅仅是字符串值。因此,您必须使用不同的转换(
xdt:transform=“Replace”
),不仅要替换一个条目,还要替换整个设置。如果您需要更多信息,请告诉我,然后我将更新我的答案。我想知道的另一件事是“一个项目中是否可能有多个settings.settings文件”?如果是,如何确保生成特定的设置文件?是-但仅作为配置转换。这意味着,一旦发布其中一个配置,如果在配置转换文件中指定了它们,则将获得不同的设置。在配置组合框中选择最后一个条目,即“configuration manager…”。在那里,单击“活动解决方案配置”组合框并选择“”。键入名称,您就有了一个新的解决方案配置,可以用于不同的转换和发布配置文件。
<applicationSettings>
    <WebApplication2.Properties.Settings>
        <setting name="Setting" serializeAs="String"
                                xdt:Transform="Replace" xdt:Locator="Match(key)">
            <value>Some value</value>
        </setting>
    </WebApplication2.Properties.Settings>
</applicationSettings>