Каталог проекта базы данных Visual Studio 2015 содержит файл с расширением jfm

242

Предполагая, что у нас есть проект базы данных, который называется, MyDatabaseтогда файл с именем MyDatabase.jfmпоявляется в корне каталога проекта.

  • Он эксклюзивно заблокирован, пока проект открыт в Visual Studio
  • Это бинарный файл
  • Это только начало появляться недавно (последние пару дней)

Я сделал поиск в Google, который не дал никакой информации. Есть некоторые ссылки на некоторые старые программы, но большинство результатов - спам / троянские программы. Я также смотрел в SO, но это также не дало никаких результатов.

Кто-нибудь знает, что это такое и почему оно там?

План состоит в том, чтобы добавить его в файл gitignore для Visual Studio , но мне нужно знать, что это первое, чтобы представить PR ...

ОБНОВИТЬ

Теперь это нарушает представление об изменениях в Team Explorer. В окне «Вывод» отсутствуют следующие изменения:

Скриншот ошибки с вкладки вывода

Поэтому я буду добавлять файл в файл .gitignore и отправлять PR . Было бы хорошо, в конце концов, узнать, что это за файл и откуда он взялся ...

Бородатая лама
источник
61
Я обновил Windows 10 с годовым обновлением и теперь этот файл создается.
Фабиан Вилерс
16
Добавление * .jfm в файл .gitignore, похоже, решает проблему.
Фабиан Вилерс
4
Я должен пошутить: вы пытались удалить и установить?
pookie
3
+1 Была проблема, когда вообще не было изменений. Удаление файла jfm из системы контроля версий через gitbash и добавление его в файл gitignore устранило проблему после долгой борьбы. Пришлось закрыть Visual Studio для работы git "git rm -rf" .. Какой кошмар!
Noobie3001
2
@ Noobie3001 работал и для меня. Добавьте * .jfm в .gitignore, затем удалите .jfm из удаленного репозитория git, отмените локальные изменения и синхронизируйте с удаленным. Проблема исправлена.
Иван Григорьевич

Ответы:

187

Это проблема, вызванная механизмом ESENT, на который опираются проекты SQL, добавленные в новый файл. Это новая функция в Windows 10 Anniversary Edition, позволяющая избежать потери данных, но тот факт, что проекты SQL хранят файл кэша .dbmdl в корневом каталоге проекта, означает, что этот заблокированный файл добавляется в элемент управления исходным кодом Git.

Ноты:

  • Запрос тянуть , чтобы исправить это в GitIgnore был принят и Визуальная команда студии работает , чтобы включить это в обновлениях в будущем. Это гарантирует, что для новых проектов файл .gitignore содержит .jfm, и проблема не возникнет.
  • Основная команда SSDT работает над решением этой проблемы в будущем обновлении, но на данный момент лучшее решение - это добавить вручную, как обсуждалось в комментариях.

Раскрытие информации : я работаю в команде SSDT для Microsoft.

Кевин Куннэйн
источник
также спасибо, что наконец предоставили реальный ответ на вопрос, что это за файл!
Бородатая лама
1
Извините за пиар - я следил за этой проблемой внутри страны и следовал рекомендованным шагам (в том числе делал пиар). Я заметил только после того, как я представил, что этот пост ссылается на отдельный PR, и к тому времени они в основном приняли его! Урок научил более внимательно читать сообщения StackOverflow :-) Кстати, у Technocore был предыдущий ответ на этот вопрос, но он почему-то был удален. Спасибо за то, что подняли эту проблему, и приносим извинения за неудобства - мы были удивлены изменением функции ESENT и все еще надеемся исправить ее.
Кевин Куннэйн
Не беспокойся, приятель, пиар не был таким уж важным. Не уверен, почему это было удалено; возможно, это было не так подробно / точно, как нужно было для ответа.
Бородатая лама
8
Я просто нажал на эту ошибку, и мне потребовалось полдня, чтобы понять, что происходит. Серьезно, кто решил сначала поместить dbmdl в корень проекта? Разве это не должно быть в / obj или что-то? Я имею в виду, иногда мне приходится удалять .dbmdl просто для того, чтобы SSDT работал. Это чертовски смутило мою команду, когда я объяснил, что «CLEAN» на самом деле не удаляет этот файл, потому что он не в obj, и теперь глупый dbmdl уничтожил еще несколько часов моей производительности с этой чепухой jfm.
Pxtl
1
К вашему сведению, это в последнем VS.gitgnore сейчас. Я просто удалил старую и заставил VS воссоздать ее, и это решило проблему для моей команды. Просто будьте осторожны, если у вас есть пользовательские записи в вашем существующем файле.
Гейб
67

Еда на вынос от других ...

  • Добавьте *.jfmк вашему.gitignore

(В powershell, Add-Content .\.gitignore *.jfm)

  • Вам может понадобиться запустить git rm --cached *.jfm
emragins
источник
1
Сто раз ДА на этот ответ. Понятно, просто и все заработало. Кроме того, я отказался от SSDT и sqlproj некоторое время назад. И этот тип проблемы был именно поэтому. Теперь я полагаюсь на простые старые сценарии sql и пользовательские миграции. Намного более управляемым и меньше головных болей (что вы думаете, будет наоборот).
pimbrouwers
1
Если вы .gitignoreне можете использовать символ новой строки, Add-Content .\.gitignore `r`n*.jfmубедитесь, что он находится на отдельной строке.
Codespaced
git rm --cached * .jfm действительно помог. Большое спасибо!
Валерий Лючин