繁体   English   中英

.Net Core 3.1.2 中的 GetFullPath 行为与 .Net 4.6.1 不同

[英]GetFullPath behavior in .Net Core 3.1.2 differs from .Net 4.6.1

下面的代码片段

var x = Path.GetFullPath(@"C:\test:");

使用 .Net 4.6.2 运行时抛出此(预计路径无效)异常

System.NotSupportedException: 'The given path's format is not supported.'

但是当我使用 .Net Core 3.2.1 运行相同的代码时,该方法只返回输入而不抛出异常。 AFAIKT 文档没有说明应该有这样的行为改变MSND

所以我的问题是:

  • 我在文档等中遗漏了什么吗?
  • 其他人可以重现这种行为吗?
  • 我应该将此作为问题报告给 dotnet/runtime 存储库吗?

这很有趣。 我可以完美地重现它。

似乎在 .NET Framework 中,它设法成功获取完整路径,但随后需要必要的文件 I/O 代码访问权限 在模拟它时,它会不遗余力地检查驱动器分隔符后的冒号并抛出异常

在 .NET Core 上,它有一个截然不同的实现,但它只做第一点。 它获取完整路径。 它不处理代码访问权限,因为这些在 .NET Core 中不存在,而且 API 只是出于兼容性目的的存根。 无论如何,它们在 Framework 中已经有些过时了。

但是,如果我们查看文档,则没有区别。 框架文档Path.GetFullPath可以抛出NotSupportedException如果:

path包含一个冒号(“:”),它不属于卷标识符(例如,“c:\\”)。

奇怪的是,.NET Core 的文档说明了完全相同的事情,尽管在这种情况下实际上并没有抛出异常。

我建议至少这是一个文档错误,如果不是运行时错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM