Кажется, что следующая ошибка 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
Экономичная эвристика robocopy заключается в том, что копия необходима, если есть изменение в размере или метке времени файла. Другими словами, Робокопия не идеальна, но проверка предназначена для выявления ошибок Робокопии. Эти ошибки, по общему признанию, маловероятны, когда никто не возится с системными часами, а программы не являются бэк-датингом. Однако, когда копируется большое количество данных, выполнение проверки может считаться разумным, чтобы обнаружить повреждение. Visual Studio без необходимости переключаться между .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
Суть : Робокопия, вероятно, в порядке, когда нет никаких системных или программных изменений системных часов, но для больших объемов данных обнаружение повреждения приятно иметь, но с трудом достижимо при использовании «по умолчанию» инструменты с учетом ошибки имени файла Visual Studio. Cygwin уже расширяет определение «инструмента по умолчанию». (На данный момент я не могу вспомнить, почему я использовал cygwin вместо подсистемы Windows 10 Linux.)
Редактировать. Обратите внимание, что это также происходит с файлом «MyProgram.exe.config», который в последнее время отображается как «MyProgram.exe.Config».