【问题标题】:Why does publishing a .NET 5 API project removes my app settings in App.config?为什么发布 .NET 5 API 项目会删除 App.config 中的应用设置?
【发布时间】:2021-08-07 11:30:04
【问题描述】:

我有一个 .NET 5 API 项目,我正试图将其发布到本地目录中。该项目有一个App.config 文件,其中包含以下几行:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings file="Config\appSettings.dev.config">
    <!-- Add comment-->
  </appSettings>
</configuration>

我需要上面的 app.config,因为我们正在从旧的 .NET Framework 应用程序迁移到新的 .NET 5 应用程序,并且我们现在想保留 XML 配置文件。我们将来会迁移它,但现在,我们希望保持配置文件不变。

但是,当我发布项目时,App.config 会转换为以下内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    </runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup></configuration>

我不确定为什么评论消失了,&lt;appSettings&gt; 元素消失了?如何发布它以使元素仍然存在?

该文件在文件属性部分设置了Copy always

【问题讨论】:

  • 你用什么来发布你的应用程序?

标签: .net .net-core


【解决方案1】:

确保您的 appsettings.json 和 launchsettings.json 已针对您的开发和生产配置文件进行了相应配置。 The docs 说有些值不是为生产设置的,所以如果你以发布格式发布,它们可能会创建一个默认文件,看起来像你的情况。

如果这不起作用,您也可以尝试使用具有相同值的 xsd:transform,例如 post

【讨论】:

    【解决方案2】:

    所以我设法让app.config 正确发布,现在可以在published 目录中找到。我不是 100% 确定我现在是如何设法发布它的,但这里有一些我改变的地方:

    1. 之前的文件名是App.config。我们将其删除并更改为app.config。 (据我所知,这不会改变任何东西,但以防万一它对其他人有帮助)

    2. 我们引用了很多 .NET 2.0 标准项目,而这些项目又引用了一些 .NET 472 项目。这可能会导致一些奇怪的发布问题,这些问题可能在对 .NET 472 的引用被删除后得到修复。

    在所有这些过程中,我们使用 dotnet publish 和通过 TeamCity 的发布配置来创建我们的包。

    我非常担心App.Config 没有显示 appsettings 值的主要原因是如上所述,我们需要使用旧的 XML appsettings 配置,因为我们正在更新到 .NET 5。我们将项目发布到 App服务并希望在 Azure 中运行它。

    然而事实证明,发布过程将值从 App.config 复制到 DLL 的配置文件中,例如ManagementApi.dll.config。 这是 IIS 使用 AspNetCoreModuleV2 在 Azure 中运行 Web API 时用于配置的文件。

    【讨论】:

      猜你喜欢
      • 2012-01-14
      • 2021-12-11
      • 2014-01-18
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 2010-10-19
      相关资源
      最近更新 更多