为什么发布.net 5 API项目会在app .config中删除我的应用设置?



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

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

我需要上面的app.config,因为我们正在从一个旧的。net框架应用程序迁移到一个新的。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>

我不确定为什么评论消失了,<appSettings>元素不见了?我如何发布它,使元素仍然存在?

文件属性部分设置了Copy always

确保您的应用设置。Json和launchsettings。为您的开发和生产配置文件相应地配置Json。文档说有些值不是为生产设置的,所以他们可能会创建一个默认文件,看起来像你的案例,如果你以发布格式发布。

如果这不起作用,你也可以尝试使用xsd:transform与这篇文章相同的值

所以我已经设法让app.config正确发布,现在可以在published目录中使用。我不能百分之百地确定我是如何做到现在发表它的,但这里是我改变的一些东西:

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

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

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

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

结果是,发布过程将App.config的值复制到DLL的配置文件中,例如ManagementApi.dll.config。这是IIS使用AspNetCoreModuleV2在Azure中运行web API时用于配置的文件。

相关内容

最新更新