迁移到 .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.