从面向 .NET Framework 4.6.2 的应用开始,对以前不支持的路径(长度和格式)进行了许多更改。 特别是,能够更加准确地检查驱动器分隔符语法(冒号)的用法是否正确。
影响
这些更改阻止了以前支持的一些 URI 路径 Path.GetDirectoryName 和 Path.GetPathRoot 方法。
缓解措施
若要解决之前可接受但不再受Path.GetDirectoryName和Path.GetPathRoot方法支持的路径问题,可以执行以下操作:
从 URL 中手动删除协议。 例如,从 URL 中删除
file://
。将 URI 传递给 Uri 构造函数,并检索属性的值 Uri.LocalPath 。
通过将
Switch.System.IO.UseLegacyPathHandling
AppContext 开关设置为true
来选择禁用新的路径规范化。<runtime> <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" /> </runtime>