El directorio de Visual Studio 2015 Database Project contiene un archivo con extensión jfm

242

Suponiendo que tenemos un proyecto de base de datos MyDatabasellamado, MyDatabase.jfmaparece un archivo llamado en la raíz del directorio del proyecto.

  • Está bloqueado exclusivamente mientras el proyecto está abierto en Visual Studio
  • Es un archivo binario
  • Solo ha comenzado a aparecer recientemente (últimos días)

He realizado una búsqueda en Google, que no ha ofrecido ninguna idea. Hay algunas referencias a algún software antiguo, pero la mayoría de los resultados son spam / trojanware. También he buscado en SO, pero eso tampoco ha producido ningún resultado.

¿Alguien sabe qué es y por qué está allí?

El plan es agregarlo al archivo gitignore para Visual Studio , pero necesito saber qué es primero para enviar el PR ...

ACTUALIZAR

Esto ahora está rompiendo la vista de Cambios de Team Explorer. No se muestran cambios con lo siguiente desde la ventana Salida:

Captura de pantalla del error desde la pestaña de salida

Como tal, agregaré el archivo al archivo .gitignore y enviaré el PR . Sería bueno saber eventualmente qué es este archivo y de dónde vino ...

La llama barbuda
fuente
61
He actualizado Windows 10 con la actualización de aniversario y ahora estoy generando este archivo.
Fabian Vilers
16
Agregar * .jfm al archivo .gitignore parece solucionar el problema.
Fabian Vilers
44
Tengo que bromear: ¿Intentaste desinstalar y volver a instalar?
pookie
3
+1 Tuve el problema de que no se mostraban cambios en absoluto. Eliminar el archivo jfm del control de origen a través de gitbash y agregarlo al archivo gitignore solucionó el problema después de mucha lucha. Tuve que cerrar Visual Studio para que funcionara el git "git rm -rf". ¡Qué pesadilla!
Noobie3001
2
@ Noobie3001 también funcionó para mí. Agregue * .jfm a .gitignore, luego elimine .jfm del repositorio de git remoto, descarte los cambios locales y sincronice con el remoto. Problema solucionado.
Ivan G.

Respuestas:

187

Este es un problema causado por el motor ESENT en el que confían los proyectos SQL que agregan un nuevo archivo. Esta es una nueva característica en Windows 10 Anniversary Edition para evitar la pérdida de datos, pero el hecho de que los proyectos SQL almacenen el archivo de caché .dbmdl en la raíz del proyecto significa que este archivo bloqueado se agrega al control de origen de Git.

Notas:

  • Se ha aceptado una solicitud de extracción para solucionar esto en GitIgnore y el equipo de Visual Studio está trabajando para incluir esto en futuras actualizaciones. Esto asegurará que para nuevos proyectos el archivo .gitignore incluya .jfm y el problema no ocurra
  • El equipo central de SSDT está trabajando para proporcionar una solución a esto en una actualización futura, pero por ahora la mejor solución es agregar manualmente como se discutió en los comentarios.

Divulgación : trabajo en el equipo SSDT para Microsoft.

Kevin Cunnane
fuente
¡también gracias por finalmente proporcionar una respuesta real a qué archivo es!
The Bearded Llama
1
Perdón por el PR: había estado siguiendo este problema internamente y seguí los pasos recomendados (incluido hacer un PR). ¡Solo noté después de enviar que esta publicación hacía referencia a un RP separado y para entonces básicamente lo habían aceptado! Lección aprendida para leer las publicaciones de StackOverflow con más cuidado :-) Por cierto, Technocore tenía la respuesta anterior a esta pregunta, pero se ha eliminado por alguna razón. Gracias por plantear este problema y disculpe las molestias: nos sorprendió el cambio de función de ESENT y todavía estamos tratando de solucionarlo correctamente.
Kevin Cunnane
No te preocupes amigo, las relaciones públicas no eran realmente tan importantes. No estoy seguro de por qué se eliminó; tal vez no fue tan detallado / preciso como debía ser para una respuesta.
The Bearded Llama
8
Acabo de encontrar este error y me tomó medio día descubrir qué estaba pasando. En serio, ¿quién decidió poner el dbmdl en la raíz del proyecto en primer lugar? ¿No debería estar en / obj o algo así? Quiero decir, ocasionalmente tengo que eliminar el .dbmdl solo para mantener SSDT funcionando. Me confundió muchísimo mi equipo cuando le expliqué que "LIMPIAR" en realidad no elimina este archivo porque no está en obj, y ahora el tonto dbmdl ha destruido otras pocas horas de mi productividad con esta tontería jfm.
Pxtl
1
FYI esto está en el último VS .gitgnore ahora. Acabo de eliminar el anterior y tuve VS recrearlo y eso resolvió el problema para mi equipo. Solo tenga cuidado si tiene entradas personalizadas en su archivo existente.
Gabe
67

La comida para llevar de los demás es ...

  • Añadir *.jfma tu.gitignore

(En powershell Add-Content .\.gitignore *.jfm)

  • Puede que tengas que correr git rm --cached *.jfm
emraginas
fuente
1
Cien veces SÍ a esta respuesta. Claro, simple y funcionó. Como comentario aparte, dejé de usar SSDT y sqlproj hace un tiempo. Y este tipo de problema era exactamente por qué. Ahora confío en scripts de SQL antiguos y simples, y en migraciones personalizadas. Mucho más manejable y menos dolores de cabeza (que crees que sería lo contrario).
pimbrouwers
1
Si .gitignoreno puede terminar con una nueva línea, use Add-Content .\.gitignore `r`n*.jfmpara asegurarse de que termine en su propia línea.
Codespaced
git rm --cached * .jfm realmente ayudó. ¡Muchas gracias!
Valeriy Lyuchyn