Visual Studio 元数据文件名不一致



以下内容似乎是Visual Studio 2017的错误。我将在这里发布它,看看是否有其他解释。

有时Visual Studio会创建一个文件名以.cache结尾的文件,有时它会以.Cache结尾。区别仅在于大写方面。

一个示例是此文件,从Visual Studio项目目录开始。

../ListEditor/obj/Debug/ListEditor.csproj.GenerateResource.cache

如果Visual Studio的操作中有一些东西可以避免这个错误,我想知道。

以下是"背景"信息,说明为什么这对我很重要,对我的询问并不重要。

文件名中的这种不一致对 Visual Studio 和 Windows 的操作没有影响,因为操作系统不区分大小写。但是,它在robocopycygwindiff --recursive的交集上确实产生了微妙的影响。

假设按如下方式进行备份和验证。

robocopy c:usersjoedocuments d:windowsbackupdocuments /XJ /MIR

diff --recursive --brief /cygdrive/c/Users/joe/Documents /cygdrive/d/windowsbackup/Documents

RoboCopy 的节约启发式方法是,如果文件的大小或时间戳发生变化,则需要副本。换句话说,robocopy并不完美,但验证旨在发现robocopy的错误。诚然,当没有人弄乱系统时钟并且程序没有反向约会时,这些错误不太可能发生。但是,当复制大量数据时,为了检测损坏,执行验证可能被认为是谨慎的做法。Visual Studio不必要地在.cache.Cache之间交替会给验证带来问题。由于diff验证发生在区分大小写的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输出并将其传递给cygwincmp,以执行cygwindiff拒绝进行的内容验证。 (使用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在将Linux子系统添加到Windows之前非常受欢迎Microsoft。(目前,我不记得为什么我使用cygwin而不是Windows 10 Linux子系统。

编辑:请注意,"MyProgram.exe.config"文件也发生了这种情况,该文件最近显示为"MyProgram.exe.Config"。

我在这里真的没有看到问题,只是说Visual Studio有时对这些.cache目录的文件名大小写不一致(确实很烦人!

使用Cygwin可以更好地进行此操作的一种方法是使用posix=0在Cygwin中"挂载"该目录(这只会使Cygwin将挂载目标下的文件/目录视为不区分大小写:https://cygwin.com/cygwin-ug-net/mount.html(。

换句话说(尽管必须这样做很烦人(,编辑/etc/fstab以使用posix=0选项挂载 Visual Studio 项目的父目录,以便它正确地将文件视为不区分大小写。 虽然我没有遇到过这个特定的问题,但我通常发现这是在Cygwin下使用Windows应用程序的最佳选择。

相关内容

  • 没有找到相关文章

最新更新