ilostmyid2 Ответов: 2

F7 каждый раз перестраивается


Когда мой проект и исходники находятся на сетевом диске, F7 всегда перестраивается. Я говорю о приложениях Visual Studio 2010, C#, form. Сетевой диск обеспечивается ресурса Samba. кого-л. conf, который выглядит следующим образом:
Цитата:
[глобальный]
протокол = протоколы SMB2

[корень]
комментарий = вся файловая система
только чтение = false
блокировка = нет
путь = /
хосты разрешают = все
записи = да
просматриваемый = да
режим создания = 0644
режим директории = 0755
гость ок = да
общественная = да
Это происходит в то время, когда на локальном диске (C:) такой проблемы нет. Похоже, что существует проблема со временем модификации файлов. Машина, на которой установлена Windows, - это виртуальная машина, предоставляемая VirtualBox, хотя я не вижу в этом причины. Есть идеи?

Что я уже пробовал:

Я понятия не имею, в чем может быть причина.

2 Ответов

Рейтинг:
2

Richard MacCutchan

Я видел это в прошлом, когда такие общие ресурсы не синхронизируют даты и время правильно, поэтому Visual Studio всегда думает, что некоторые источники устарели.


ilostmyid2

вопрос именно в том, что заставляет дату-время не синхронизироваться?

Richard MacCutchan

Это проблема с Самбой.

Рейтинг:
10

Jochen Arndt

Вы можете попробовать установить

dos filetime resolution = yes
fake directory create times = yes
опции. Это было необходимо для более старых версий VS, но я не знаю, ведут ли себя последние версии VS по-прежнему так, как описано в кого-л. конф[^]:
разрешение dos filetime (S)
В файловой системе DOS и Windows FAT самая высокая степень детализации по временному разрешению составляет две секунды. Установка этого параметра для общего ресурса приводит к тому, что Samba округляет отчетное время до ближайшей двухсекундной границы, когда вызов запроса, требующий разрешения в одну секунду, выполняется в smbd(8).

Этот параметр в основном используется в качестве параметра совместимости для Visual C++ при использовании с общими ресурсами Samba. Если oplocks включены на общем ресурсе, Visual C++ использует два разных вызова чтения времени, чтобы проверить, изменился ли файл с момента его последнего чтения. Один из этих вызовов использует односекундную гранулярность, другой-двухсекундную гранулярность. Поскольку двухсекундный вызов округляет любую нечетную секунду вниз, то если файл имеет временную метку нечетного числа секунд, то эти две временные метки не будут совпадать, и Visual C++ будет продолжать сообщать об изменении файла. Установка этого параметра приводит к совпадению двух временных меток, и Visual C++ доволен.