.NET Core引用.NET Standard库时读取App.Config的问题
我之前刚好碰到过一模一样的坑,折腾了好一阵才搞定,给你分享几个可行的解决步骤:
确保App.config被复制到输出目录
右键单元测试项目里的App.config,打开「属性」面板,把「复制到输出目录」设置为「如果较新则复制」或者「始终复制」。.NET Core不会像.NET Framework那样自动把App.config带到输出目录,必须手动配置这个属性,不然ConfigurationManager根本找不到文件。验证配置文件的输出命名
编译测试项目后,去输出目录(一般是bin/Debug/netcoreapp2.0)看看,应该能找到一个名为[你的测试项目名称].dll.config的文件,打开它确认里面的连接字符串是正确的。如果没有这个文件,说明复制属性没设对,或者项目没重新编译。检查ConfigurationManager包版本
确保你安装的System.Configuration.ConfigurationManagerNuGet包版本和.NET Core 2.0兼容。建议安装对应.NET Core 2.x系列的稳定版(比如2.0.0或后续兼容补丁版),版本不匹配也可能导致读取异常。调试确认配置文件路径
可以在测试代码里加一行调试代码,看看ConfigurationManager实际读取的是哪个文件:var configPath = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath; Console.WriteLine($"当前读取的配置文件:{configPath}");运行测试后查看输出,就能确认是不是指向了你预期的配置文件,如果不是,就排查文件复制或者命名的问题。
清理重建测试项目
有时候Visual Studio的缓存会搞鬼,先清理测试项目的输出目录,再重新生成一遍,确保最新的App.config被复制过去。
亲测这些步骤能解决.NET Core 2.0测试项目里ConfigurationManager读不到App.Config连接字符串的问题,你可以挨个试试。
内容的提问来源于stack exchange,提问作者StuffOfInterest

