1

关于这个问题:

File.Copy() 和符号链接

我发现这条线

SafeFileHandle fileHandle = 
    CreateFile(symlink.FullName, 0, 2, 
               IntPtr.Zero, 
               CREATION_DISPOSITION_OPEN_EXISTING, 
               FILE_FLAG_BACKUP_SEMANTICS, 
               IntPtr.Zero);

因错误而失败

该系统找不到指定的文件

对于以下非常具体的情况:

原始文件在父目录中

C:\Temp\SymlinkUnitTest\Original.txt [真实文件]

符号链接位于真实子目录中

C:\Temp\SymlinkUnitTest\Work\Symlink.txt [上述文件的符号链接]

它似乎在许多其他情况下都有效(引用的 post pass 中的所有单元测试)。

这个特殊案例有什么特别之处吗?

作为参考,这是失败的单元测试:

[TestMethod]
public void FileSymlinkWork()
{
    string file = @"C:\Temp\SymlinkUnitTest\Work\Symlink.txt";
    Assert.IsTrue(File.Exists(file)); // Succeeds 

    // Following line throws Exception:
    string actual = new FileInfo(file).GetSymbolicLinkTarget();
    Assert.IsTrue(actual.EndsWith(@"SymlinkUnitTest\Original.txt"));
}
4

0 回答 0