升级VS 2017 15.6.0后Directory.GetCurrentDirectory()路径异常问题
解决VS2017 15.6.0升级后.NET Core控制台应用找不到appsettings.json的问题
我升级到VS2017 15.6版本后也碰到过一模一样的问题,折腾了好一会儿才搞定,给你几个靠谱的解决方案:
1. 检查文件的「复制到输出目录」属性
这是最直接的解决办法:
- 在解决方案资源管理器里右键点击
appsettings.json文件,选择「属性」 - 在属性面板里,把「复制到输出目录」的选项改成「如果较新则复制」或者「始终复制」
升级VS后这个属性可能被意外重置了,导致文件没有被自动复制到调试输出目录,所以程序找不到它。
2. 直接修改项目文件(.csproj)强制配置复制
如果上面的UI设置没生效,可以直接编辑项目文件来确保配置:
右键项目选择「编辑.csproj」,在文件里添加以下代码块:
<ItemGroup> <None Update="appsettings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
PreserveNewest会保证只有当源文件更新时才复制,既高效又能确保输出目录里有最新的配置文件。
3. 确认调试工作目录设置
有时候调试时的工作目录不对也会导致这个问题:
- 右键项目选择「属性」,切换到「调试」标签页
- 查看「工作目录」字段,确保它设置为
$(TargetDir)(也就是输出目录)
如果工作目录指向了项目根目录以外的路径,程序会在错误的位置寻找appsettings.json。
补充说明
VS2017 15.6版本对.NET Core项目的文件复制逻辑做了一些调整,之前默认自动复制配置文件的行为被修改了,所以才会出现之前正常现在报错的情况,上面的方法基本都能解决这个问题。
内容的提问来源于stack exchange,提问作者Zoinky
相关产品推荐
相关产品推荐

