繁体   English   中英

了解 ASP.NET Web.config 转换 - Web.Debug.config

[英]Understanding ASP.NET Web.config transformations - Web.Debug.config

我已经为此苦苦挣扎了一个小时,但找不到简单的解释或至少是一些说明这一点的 Microsoft 文档。

我想了解下一个文件的行为:

  • 网页配置
  • 网页调试配置
  • Web.Release.config
  • Web.Staging.config(我使用右键单击 Web.config -> Add Config Transform 创建了这个)

我在Web.config文件中添加了下一个 appSetting:

<configuration>
  ..
  <appSettings>
    <add key="DevDisplayPanel" value="default value" />
  </appSettings>
  ..
</configuration>

在我的Web.Debug.config 中,我将DevDisplayPanel更改为:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="DevDisplayPanel" 
         xdt:Transform="Replace" 
         xdt:Locator="Match(key)" 
         value="Debug mode" />
  </appSettings>
</configuration>

我像这样显示了 appSettings 项目:

ViewBag.Test = System.Configuration.ConfigurationManager.AppSettings["DevDisplayPanel"];

我明白,如果我在 Visual Studio运行 Debug -> Start Debugging,将从Web.Debug.config读取 DevDisplayPanel 设置。 我找不到说明这一点的 Microsoft 文档。

我尝试使用 Debug、Release 和 Staging 解决方案配置运行我的 Web 应用程序,但它们都显示来自文件Web.config 的DevDisplayPanel 值。

文件 Web.Debug|Release|MyConfiguraton.config 在哪里发挥作用。 我错过了什么,最重要的是,这种行为应该在文档中的某处以粗体显示!!

Web.config 转换与在给定配置中发布项目相关联。

在 Visual Studio 中调试时,它始终使用普通的 web.config 文件,无论配置如何。

您需要从菜单选项中选择 Build => Publish,然后运行已发布的应用程序。

归功于https://gist.github.com/EdCharbeneau/9135216

您可以在 .csproj 的底部添加类似的内容

 <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets" />
  <Target Name="BeforeBuild">
    <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
  </Target>

v16 是 Visual Studio 2019。

请注意,这将使用转换中的任何更改覆盖您的原始 web.config。 我实际上正在与我的团队讨论如何最好地在我们的项目中执行此操作,一种解决方案是将所有用于调试项目的“标准”设置放在 web.debug.config 中。 并将其视为您的“基础”web.config。

使用此代码段具有在部署之前在构建服务器上工作的额外好处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM