以下似乎是Visual Studio 2017错误。我会在这里发布,看看是否有其他解释。
有时,Visual Studio会创建一个文件名以.cache
结尾的文件,有时它会以.Cache
结尾。区别仅在于资本化方面。
此文件的一个示例是从Visual Studio项目目录开始。
../ListEditor/obj/Debug/ListEditor.csproj.GenerateResource.cache
如果Visual Studio的操作中有某些东西可以避免这个我想知道的错误。
以下是“背景”信息,说明为什么这对我很重要,对我的询问不重要。
文件名中的这种不一致对Visual Studio和Windows的操作没有影响,因为操作系统不区分大小写。但是,它在robocopy
和cygwin
以及diff --recursive
的交集中确实产生了微妙的影响。
假设进行了备份并验证如下。
robocopy c:\users\joe\documents d:\windowsbackup\documents /XJ /MIR
diff --recursive --brief /cygdrive/c/Users/joe/Documents /cygdrive/d/windowsbackup/Documents
.cache
和.Cache
之间不必要地交替产生了验证问题。由于验证发生在对区分大小写的cygwin中,因此将输出以下内容。
Only in /cygdrive/c/users/joe/Documents/source/repos/Auna4/ListEditor/obj/Debug: ListEditor.csproj.GenerateResource.cache
Only in /cygdrive/d/windowsbackup/Documents/source/repos/Auna4/ListEditor/obj/Debug: ListEditor.csproj.GenerateResource.Cache
所以diff
发现了差异,但它并不是我们关心的那种差异,而且它拒绝验证文件内容以检测损坏。一种解决方案是编写脚本来收集diff
输出并将其传递给cygwin cmp
以执行cygwin diff
拒绝执行的内容验证。 (使用Diff是因为它支持递归,但cmp不支持。)
cmp /cygdrive/c/users/joe/Documents/source/repos/Auna4/ListEditor/obj/Debug/ListEditor.csproj.GenerateResource.cache /cygdrive/d/windowsbackup/Documents/source/repos/Auna4/ListEditor/obj/Debug/ListEditor.csproj.GenerateResource.Cache
底线:当没有人类或程序化的系统时钟更改时,robocopy可能还可以,但是对于大量的数据来说,检测到损坏是很好的,但是“默认”不容易实现“给出Visual Studio文件名错误的工具。 cygwin已经延伸了“默认”工具的定义。 (目前,我不记得为什么我使用cygwin而不是Windows 10 Linux子系统。)
编辑:请注意,“MyProgram.exe.config”文件也会出现这种情况,该文件最近显示为“MyProgram.exe.Config”。
答案 0 :(得分:1)
我不会在这里真正看到一个问题,只是说Visual Studio有时会对这些.cache
目录的文件名大小写不一致(确实很烦人!)
使用Cygwin可以让这个游戏变得更好的一种方法就是" mount" Cygwin中带有posix=0
的目录(这使得Cygwin将mount目标下的文件/目录视为不区分大小写:https://cygwin.com/cygwin-ug-net/mount.html)。
换句话说(因为必须这样做很烦人)编辑/etc/fstab
以使用posix=0
选项挂载Visual Studio项目的父目录,以便正确处理文件不敏感的。虽然我还没有遇到这个特定问题,但我一般认为这是在Cygwin下使用Windows应用程序的最佳选择。