Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net Core 3.1.2中的GetFullPath行为不同于.Net 4.6.1_C#_.net_.net Core - Fatal编程技术网

C# .Net Core 3.1.2中的GetFullPath行为不同于.Net 4.6.1

C# .Net Core 3.1.2中的GetFullPath行为不同于.Net 4.6.1,c#,.net,.net-core,C#,.net,.net Core,下面的代码片段 var x=Path.GetFullPath(@“C:\test:”); 在使用.Net 4.6.2运行时引发此异常(路径无效,应为该异常) System.NotSupportedException:“不支持给定路径的格式。” 但是当我使用.NETCore3.2.1运行相同的代码时,该方法只返回输入而不引发异常。文档没有声明应该有这样的行为改变 因此,我的问题是: 我是不是在文件中遗漏了什么 其他人能复制这种行为吗 我是否应该将此作为问题报告给dotnet/运行时存储库 这很

下面的代码片段

var x=Path.GetFullPath(@“C:\test:”); 在使用.Net 4.6.2运行时引发此异常(路径无效,应为该异常)

System.NotSupportedException:“不支持给定路径的格式。”

但是当我使用.NETCore3.2.1运行相同的代码时,该方法只返回输入而不引发异常。文档没有声明应该有这样的行为改变

因此,我的问题是:

  • 我是不是在文件中遗漏了什么
  • 其他人能复制这种行为吗
  • 我是否应该将此作为问题报告给dotnet/运行时存储库

  • 这很有趣。我可以完美地复制它

    在.NETFramework中,它似乎成功地获得了完整的路径,但随后。在模拟过程中,它会特意检查驱动器分隔符和后的冒号

    在.NETCore上,它有一个截然不同的实现,但它只做了第一点。它得到了完整的路径。它不处理代码访问权限,因为这些权限在.NETCore中不存在,API只是出于兼容性目的的存根。无论如何,它们在框架中已经有些不推荐了

    然而,如果我们转向文档,就没有区别了。假设
    Path.GetFullPath
    可以抛出
    NotSupportedException
    异常,如果:

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

    奇怪的是,.NETCore的文档说,尽管在这个场景中没有实际抛出异常


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

    有趣的是,这实际上可能是一个错误,或者至少文档需要更新。看起来像是一个错误(如果这是一个有意的改变,那么我认为将
    放在
    app.config
    中应该会恢复到以前的行为——但我尝试了,但没有成功)。即使你做了类似于:
    var x=Path.GetFullPath(@):::::”;
    的操作,它也会返回
    :\:::
    @Sᴇ我很感兴趣,我从fiddle@PatrickBeynio正确,在fiddle中它是
    /app/:code>,在我的本地机器上它是
    :\:code>。你是对的。.Net core的伙计们这一新行为是有意的,文档已经过时了。希望他们能在某个时候更新文档。还有关于API的不一致将继续存在。