关于这个问题:
我发现这条线
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"));
}