下面的代码片段
var x = Path.GetFullPath(@"C:\test:");
Run Code Online (Sandbox Code Playgroud)
使用 .Net 4.6.2 运行时抛出此(预计路径无效)异常
System.NotSupportedException: 'The given path's format is not supported.'
但是当我使用 .Net Core 3.2.1 运行相同的代码时,该方法只返回输入而不抛出异常。AFAIKT 文档没有说明应该有这样的行为改变MSND
所以我的问题是:
这很有趣。我可以完美地重现它。
看来在.NET Framework中,它成功地获取了完整路径,但随后要求必要的文件I/O代码访问权限。在模拟过程中,它会特意检查驱动器分隔符后面的冒号并抛出异常。
在 .NET Core 上,它的实现有很大不同,但它只完成第一位。它获得完整路径。它不处理代码访问权限,因为这些权限在 .NET Core 中不存在,并且 API 只是出于兼容性目的的存根。无论如何,它们在框架中已经被弃用了。
但是,如果我们查看文档,就会发现没有区别。框架文档说Path.GetFullPath可以抛出一个NotSupportedExceptionif:
path包含不属于卷标识符一部分的冒号(“:”)(例如“c:\”)。
奇怪的是,.NET Core 的文档说的是完全相同的事情,尽管在这种情况下实际上没有抛出异常。
我建议,即使不是运行时错误,至少这是一个文档错误。
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |