下面的代码片段
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
所以我的问题是:
最佳答案
这很有趣。我可以完美地重现它。
似乎在 .NET Framework 中,它设法成功获取完整路径,但随后 demands the neccessary File I/O code access permissions .在模拟这一点时,它会不遗余力地检查驱动器分隔符和 throws an exception 之后是否有冒号。 .
在 .NET Core 上,它有一个截然不同的实现,但它只做第一点。它获取完整路径。它不处理代码访问权限,因为这些在 .NET Core 中不存在,而且 API 只是出于兼容性目的的 stub 。无论如何,它们在 Framework 中已经有些过时了。
但是,如果我们查看文档,则没有区别。 Framework docs说 Path.GetFullPath
可以扔一个NotSupportedException
如果:
path
contains a colon (":") that is not part of a volume identifier (for example, "c:\").
奇怪的是,.NET Core 的文档说 the exact same thing ,尽管在这种情况下实际上并未抛出异常。
我建议至少这是一个文档错误,如果不是运行时错误。
关于c# - .Net Core 3.1.2 中的 GetFullPath 行为与 .Net 4.6.1 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60634204/