迁移到 .Net Core 5 - 生成的 .config 文件的名称已更改

Posted

技术标签:

【中文标题】迁移到 .Net Core 5 - 生成的 .config 文件的名称已更改【英文标题】:Migration to .Net Core 5 - The generated .config file's name has changed 【发布时间】:2021-11-26 10:48:24 【问题描述】:

我正在将我们的一个 Visual Studio 解决方案迁移到 .Net Core 5。它有两个项目:Visual Basic 中的 WinForms 应用程序(旧版)和 C# 中的类库。

我注意到为 WinForms 应用程序生成的 .config 文件的名称与以前的版本不同:它以前是 WinForms 应用程序名称.exe.config,现在是 WinForms 应用程序名称.dll。配置。

我无法找到有关此名称更改的文档。

我担心的是我们的版本更新过程。在我们软件的每个新版本中,我们都会将 .exe 和 .dll 文件提供给我们的 IT 运营人员,并由他们进行设置以供使用。如果 .config 文件发生更改,我们还会向其提供一条注释,告诉他们要添加、删除或更新哪些节点。

现在,我不知道可执行文件是否能与旧名称格式的配置文件一起正常工作。所以我做了实验。首先,我更改 .dll.config 文件的键值并直接启动 .exe。通常情况下,这些变化都会被考虑在内。然后我再次将 .dll.config 文件重命名为 .exe.config,然后重新启动 .exe。这一次,应用程序使用初始值,即使我再次更改 .exe.config 文件。

我还尝试手动重命名配置文件:简单地(并且可以预见地)构建解决方案会创建一个新的 .dll.config 文件。

    在某处是否有这方面的文档? 有没有办法撤消此名称更改,以便我们的 IT 运营人员不必对此感到疑惑? (他们已经够忙了。)

【问题讨论】:

顺便说一句,我注意到My.Settings 的一个问题(它具有正常属性,但获取它们会引发异常):我从here 收集到问题来自@987654323 @ 配置文件中不应出现的部分,可以手动删除。 (如链接页面中所述,它是通过重建重新生成的,但幸运的是,根据我的经验,不是通过解决方案构建。) 【参考方案1】:

这种变化的原因与我在那儿的回答有关:Is the file format of a Library only a DLL file?

.NET 核心应用程序的.exe 文件只是一个存根加载程序。实际代码在.dll 文件中。请注意,对于应用程序项目,您现在拥有application.dll application.exe。我很少操作配置文件,所以我不太确定那里的条目,但如果它适用于 .dll.config,那么就使用它。无论如何,您都必须将更改告知您的 IT,因为可能还有其他重大更改(他们可能还需要安装新框架等)。

请确保您的 C# 库和应用程序没有使用相同的名称。这在以前适用于 .NET 框架,但在 .NET Core 中会出现问题。

【讨论】:

谢谢!谢天谢地,我们对库和应用程序有不同的名称,所以一切都会好起来的。 我原本打算告诉我们的 IT 运营人员重命名文件,但转念一想,<system.diagnostics> 部分的障碍意味着他们最好复制粘贴 <userSettings>从旧文件到新文件的部分。

以上是关于迁移到 .Net Core 5 - 生成的 .config 文件的名称已更改的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Azure Functions v3 迁移到 .net core 5.0

Azure Devops - 在 Nuget 包中从 .NET Core 3.1 迁移到 .NET 5 的兼容性问题

从 .NET Core 2.2 迁移到 3.1 后,EF Core 随机抓取 API 请求上的用户表

使用 System.IdentityModel.Tokens.Jwt 从 1.1 迁移到 2.0 后,JWTAuthentication 在 asp.net core 2.0 中不起作用 - 5.1.

Cosmos 的 .NET 5 和 Entity Framework Core (5.0.1) 迁移问题

从.Net core 2.2迁移到.Net Core 3.0