我有一个。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
目录中使用。我不能百分之百地确定我是如何做到现在发表它的,但这里是我改变的一些东西:
-
先前文件名为
App.config
。我们将其删除并将其更改为app.config
。(据我所知,这不会改变任何东西,但以防它对其他人有所帮助) -
我们引用了很多。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时用于配置的文件。