如何在.Net core应用程序中发布环境特定的应用程序设置?

2024-01-06

我有 3 个特定环境appsettings我的 .Net core 应用程序中的文件

in project.json我已经设置了publishOptions像这样。 (根据建议here https://stackoverflow.com/questions/37858312/dotnet-publish-doesn%C2%B4t-publish-correct-appsettings-env-environmentname-json/37859691)

"publishOptions": {
    "include": [
      "wwwroot",      
      "appsettings.development.json",
      "appsettings.staging.json",
      "appsettings.production.json",
      "web.config"
    ]
  },

我有 3 个相应的启动类,它们使用适当的appsettings基于环境

var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: false, reloadOnChange: true);

但是,当我发布应用程序时,所有 3 个 appsettings 文件最终都会出现在所有环境中。如何发布环境特定的应用程序设置文件?


如果其他人想知道如何在多个环境中使用不同的应用程序设置,这里是一个可能的解决方案。

dotnet publish --configuration [Debug|Release]如果出现以下情况,会将相应的 appsettings.json 文件复制到发布文件夹中:*.csproj这些文件有条件逻辑:

  • 首先在.pubxml发布配置文件(可以在Properties->PublishProfilesVisual Studio 的)禁用默认包含所有内容文件
<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
  • 然后指定条件调试/发布逻辑
<Choose>
    <When Condition="'$(Configuration)' == 'Debug'">
      <ItemGroup>
        <None Include="appsettings.json" CopyToOutputDirectory="Always" CopyToPublishDirectory="Always" />
        <None Include="appsettings.prod.json" CopyToOutputDirectory="Never" CopyToPublishDirectory="Never" />
      </ItemGroup>
    </When>
    <When Condition="'$(Configuration)' == 'Release'">
      <ItemGroup>
        <None Include="appsettings.json" CopyToOutputDirectory="Never" CopyToPublishDirectory="Never" />
        <None Include="appsettings.prod.json" CopyToOutputDirectory="Always" CopyToPublishDirectory="Always" />
      </ItemGroup>
    </When>
</Choose>
  • 终于进去了Startup.cs尝试加载这两个文件
public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile($"appsettings.prod.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables();

    Configuration = builder.Build();
}

我希望这个解决方案对您有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在.Net core应用程序中发布环境特定的应用程序设置? 的相关文章

随机推荐

  • Python 中断言的使用示例?

    我已经读过有关何时使用断言与异常的信息 但我仍然没有 明白 似乎每当我认为我处于应该使用断言的情况时 在后来的开发中我发现我 三思而后行 以确保当我调用函数时断言不会失败 由于还有另一个 Python 习惯用法 即更喜欢使用 try exc
  • 在运行时创建TabView?

    我需要使用 java 代码在运行时创建选项卡视图 笔记 不使用xml设计 在 XML 中创建 TabHost TabWidget 然后在运行时添加 TAbHost TabSpec
  • 如何创建 C 头文件 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望能够在头文件中创建一组函数 我可以将其 include 到我的一个 C 程序中 打开您最喜欢的文本编辑器 创建一个名为whate
  • 带有 Spring 缓存和咖啡因的 Spring 云网关

    我有一个 Spring Cloud 网关 它将 API 剩余请求转发到一些微服务 我想缓存特定请求的响应 为此我写了这个过滤器 Component Slf4j public class CacheResponseGatewayFilterF
  • 在 chrome 扩展中正确使用 execcommand("paste")

    我正在尝试使用以下命令将剪贴板数据粘贴到文本区域中execcommand paste 带有 chrome 扩展 但我似乎无法让它工作 权限已设置 我尝试过设置focus 在文本区域上 但是document execCommand paste
  • numpy 数组之间的“in”运算符的含义是什么?

    我注意到in可以在 numpy 数组之间使用 然而 它的含义可能有点违反直觉 import numpy as np np array 0 in np array 1 2 False np array 0 in np array 0 1 Tr
  • 如何使用 iDangerous Swiper 和 jquery .click();同时

    我坚持以下几点 我正在使用 iDangerous Swiper 插件 效果很好 但是 我还想在同一个 iDangerous swiper 上使用 jQuery 的单击功能 例如 div div class swiper slide lots
  • 如何使用 LINQ 查找并删除集合中的重复对象?

    我有一个代表对象的简单类 它有 5 个属性 一个日期 两个小数 一个整数和一个字符串 我有一个集合类 源自CollectionBase 这是一个容器类 用于保存我的第一个类中的多个对象 我的问题是 我想删除重复的对象 例如具有相同日期 相同
  • 如何对 IBM Cloud 数据库进行按需备份

    我在 IBM Cloud 中有一个 Elasticsearch 部署 我想从中定期进行按需备份 有没有办法使用命令行启动备份 IBM Cloud 数据库每天定期备份其所有数据库 但您无法选择备份计划 如果您想更频繁地创建备份或继续创建备份
  • 我应该对 Asp.NET Web-api 路由使用 RouteParameter 还是 UrlParameter?

    我见过两者都被使用 所以我想知道 它们做相同的事情还是不同的事情 如果是后者 有什么区别呢 我尝试通过查看 Visual Studio MVC 4 rc Web api 模板来自己回答这个问题 但遗憾的是它同时使用了两者 所以我的困惑仍然存
  • React context - 'contextType' 未定义

    我在用 电子邮件受保护 cdn cgi l email protection and 电子邮件受保护 cdn cgi l email protection应该支持反应Context并尝试运行一个与以下相同的简单示例反应上下文 https r
  • 如何更改 Vob 所有者和 Vob 组?

    我尝试更改 vob 所有者和 vob 组 它会抛出如下错误 Error No ClearCase group found Error unknown protection styles 您可以查看技术说明 关于在 Windows 上更改 V
  • JSTL 标签如何在 JSF 2.1 中评估以下内容

    我有下面的 Test xhtml 我可以在其中选择 海 空 模式 我不想将所有 4 个页面 Page1 xhtml Page2 xhtml Page3 xhtml Page4 xhtml 加载到 jsf 视图树中 在我的场景中 模式一旦选择
  • Java UTC 毫秒

    试图在java中获取世界时间似乎是如此困难 C 中类似这样的东西 DateTime Now ToUniversalTime 似乎是那么困难的事情 我有代码从较早的日期 也是 utc 中减去当前的 utc 时间来查找时间差 但我似乎不知道如何
  • Rails 将请求参数中的空数组转换为 nils

    我的应用程序中有一个 Backbone 模型 它不是典型的平面对象 它是一个大型嵌套对象 我们将嵌套部分存储在 MySQL 数据库的 TEXT 列中 我想在 Rails API 中处理 JSON 编码 解码 以便从外部看起来您可以 POST
  • PyMongo:当 no_cursor_timeout=True 时光标会发生什么

    看着cursorMongoDB 的文档 我没有看到删除游标的方法 如果我将光标与no cursor timeout属性设置为 True 当我的脚本终止时 即使我还没有到达光标结果的末尾 光标是否也会被删除 Python 使用引用计数进行对象
  • 使用 openpyxl 取消合并 Excel 工作表中的每个单元格

    有没有办法使用 openpyxl 取消合并 Excel 工作表中的每个单元格 不能保证每个或任何单元格都被合并 但基本上我想取消合并单元格 如果它们存在于工作表中 您可以迭代工作表的merged cells属性并使用每一个作为参数unmer
  • 在节点heroku项目上安装gems

    我正在 heroku 上编写一个节点应用程序 该应用程序需要一个 gem compass http compass style org待安装 用于节点罗盘 https github com nathggns node compass 但是
  • 使用 MPI_Scatter 发送矩阵的列

    我正在尝试使用 MPI 编写矩阵向量乘法程序 我试图将矩阵的列发送到单独的进程并在本地计算结果 最后我做了一个MPI Reduce using MPI SUM手术 发送矩阵的行很容易 因为 C 按行优先顺序存储数组 但列则不然 如果您不一一
  • 如何在.Net core应用程序中发布环境特定的应用程序设置?

    我有 3 个特定环境appsettings我的 Net core 应用程序中的文件 in project json我已经设置了publishOptions像这样 根据建议here https stackoverflow com questi