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

标签 c# .net .net-core

下面的代码片段

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 中,它设法成功获取完整路径,但随后 demands the neccessary File I/O code access permissions .在模拟这一点时,它会不遗余力地检查驱动器分隔符和 throws an exception 之后是否有冒号。 .

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

    但是,如果我们查看文档,则没有区别。 Framework docsPath.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/

    相关文章:

    c# - 如何更改 XML 属性

    c# - Visual Studio 中的 "Treat all warnings as errors except..."

    .net - LINQ to Entities 无法识别方法

    c# - JSON 对象在使用 JsonResult 返回时被序列化为空括号

    .net - 在 VB .NET 中查找并启动 VPN 连接

    c# - 我如何在 dot net Core 中排列应用程序 dll 文件

    c# - Caliburn.Micro GetAllInstances 只返回一个 viewModel(Caliburn.Micro MVVM)

    c# - 为什么 Rhino Stubs 允许我对它们设定期望值?

    c# - 如何在IdentityServer4中添加角色到声明?

    c# - 如何在 .NET Core 中以编程方式下载最新的 nuget 包?