C# Uri.MakeRelativeUri处理不正确/

C# Uri.MakeRelativeUri处理不正确/,c#,unity3d,mono,C#,Unity3d,Mono,使用MakeRelativeUri时,我的路径不正确。现在这可能是Unity和mono的问题,或者我只是用错了,或者可能.net中确实有一个bug。你必须原谅这个复杂的例子,但这就是我所拥有的 System.Uri fileURI = new System.Uri( "/Home/Folder1/Folder2/Folder3/Folder4/Folder5/Folder6/../../../../Folder7/Folder8/file.png" ); System.Uri rootURI =

使用MakeRelativeUri时,我的路径不正确。现在这可能是Unity和mono的问题,或者我只是用错了,或者可能.net中确实有一个bug。你必须原谅这个复杂的例子,但这就是我所拥有的

System.Uri fileURI = new System.Uri( "/Home/Folder1/Folder2/Folder3/Folder4/Folder5/Folder6/../../../../Folder7/Folder8/file.png" );
System.Uri rootURI = new System.Uri( "/Home/Folder1/Folder2/Folder3/../FolderA/." );
result = rootURI.MakeRelativeUri( fileURI ).ToString();
本例中的结果是
。/../Folder4/Folder5/Folder6/../../Folder7/Folder8/file.png

但应该是这样
。/Folder3/Folder4/Folder5/Folder6/../../../../../../Folder7/Folder8/file.png


它似乎将根路径中的../视为一个目录,而不是返回目录的指令。有人能确认这是不是真的吗?

在将路径字符串传递到
Uri
构造函数之前,我通过
path.GetFullPath()
来解决这个问题。这样就可以正确地去掉../了,这样就可以像您预期的那样工作了

您能更新样本以使其编译吗?(RootPath需要是绝对的…)用c#code替换伪代码我应该更加注意标记-原始代码可能还可以。您发布的代码在常规的.Net()上不起作用,但在mono上似乎还可以。检查旧的类似问题是否有帮助: