Имена файлов метаданных Visual Studio противоречивы - PullRequest
0 голосов
/ 12 мая 2018

Кажется, что следующая ошибка 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».

1 Ответ

0 голосов
/ 13 мая 2018

Я действительно не вижу здесь вопроса, кроме как сказать, что Visual Studio иногда не согласуется с регистром имен файлов для этих .cache каталогов (действительно раздражает!)

Один из способов улучшить эту игру сCygwin должен «смонтировать» этот каталог в Cygwin с помощью posix=0 (что просто заставляет Cygwin рассматривать файлы / каталоги в рамках цели монтирования без учета регистра: https://cygwin.com/cygwin-ug-net/mount.html).

Другими словами (как бы это ни раздражало)чтобы сделать это) отредактируйте /etc/fstab, чтобы смонтировать родительский каталог ваших проектов Visual Studio с параметром posix=0, чтобы он правильно обрабатывал файлы без учета регистра. Хотя я не сталкивался с этой конкретной проблемой, яОбычно считается, что это лучший вариант для работы с приложениями Windows под Cygwin.

...