【问题标题】:Build .Net Web application based on environment基于环境构建.Net Web应用
【发布时间】:2018-04-16 03:58:41
【问题描述】:

我的 .Net Web 应用程序可以通过 3 个环境运行,即开发、发布和生产,每个环境都有自己的配置和项目设置文件。

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

有人可以指导我吗?

【问题讨论】:

  • 先问自己这些问题。 答: 除了这个项目(Java - .Net – iOs Android – Many:Multiple Languages/OS usage),我对其他项目的开发技术是什么。 B:您预计未来几年(5 或 500 个)会生成多少个不同的最终状态二进制文件或项目。 C: 我是否已经购买了隐含的基础设施,例如 AWS 或 Azure 或 Always on Perm)。 D: 我的源代码控制选择是灵活的还是意味着特定的架构技术?首先回答这些问题。

标签: asp.net .net


【解决方案1】:

您可以创建配置转换并在发布配置文件中使用它们。对于每个配置(Debug、Release、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>

该示例将现有的ClientSessionTimeout 设置替换为指定的设置(使用value="100")。请注意xdt:locator 如何指定 key 属性将用于本地化设置,xdt:Transform 指定将设置提到的属性(此处:value)。

如果你有applicationSettings,你需要替换设置本身:

<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>

不同之处在于数据源设置、其他环境特定设置(例如 Web 服务的 URL 等)。

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

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

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


对于疑难解答,并了解有关该主题的更多信息,我推荐以下链接:

请注意堆栈溢出的侧边栏显示更多相关链接。

【讨论】:

  • 感谢您的回复。这真的很有帮助。但这仅限于使用多个 web.config 文件。我还有多个 applicationSettings 可以使用。如何根据环境加载一个?
  • 如果您的 Web 项目中有 applicationSettings,它们也会存储在您的 Web.config 文件中。不同之处在于 applicationSettings 也处理复杂的数据类型,而不仅仅是字符串值。因此,您必须使用不同的转换 (xdt:Transform="Replace"),并且不仅要替换单个条目,还要替换整个设置。如果您需要更多信息,请告诉我,然后我会更新我的答案。
  • 我想知道的另一件事“项目中是否可以有多个 settings.settings 文件”?如果是,我如何确保构建特定的设置文件?
  • 是的 - 但仅作为配置转换。这意味着一旦您发布其中一个配置,如果您在配置转换文件中指定了它们,您将获得不同的设置。在配置组合框中选择最后一个条目,即“配置管理器...”。在那里,单击“Active solution configuration”组合框并选择“”。输入名称,您就有了一个新的解决方案配置,可用于不同的转换和发布配置文件。
猜你喜欢
  • 2018-01-23
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 2011-09-11
  • 2017-11-10
  • 1970-01-01
相关资源
最近更新 更多