C# .Net Core 3.1.2中的GetFullPath行为不同于.Net 4.6.1
下面的代码片段 var x=Path.GetFullPath(@“C:\test:”); 在使用.Net 4.6.2运行时引发此异常(路径无效,应为该异常)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/运行时存储库 这很
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的不一致将继续存在。