La directory del progetto di database di Visual Studio 2015 contiene un file con estensione jfm


242

Supponendo che abbiamo un progetto di database chiamato, MyDatabasequindi un file chiamato MyDatabase.jfmappare nella radice della directory del progetto.

  • È bloccato esclusivamente mentre il progetto è aperto in Visual Studio
  • È un file binario
  • Ha iniziato a comparire solo di recente (ultimi due giorni)

Ho fatto una ricerca su Google, che non ha offerto alcuna comprensione. Ci sono alcuni riferimenti ad alcuni vecchi software, ma la maggior parte dei risultati sono spam / trojanware. Ho anche cercato in SO, ma questo non ha prodotto alcun risultato.

Qualcuno sa di cosa si tratta e perché è lì?

Il piano è quello di aggiungerlo al file gitignore per Visual Studio , ma devo sapere che cosa è prima di inviare il PR ...

AGGIORNARE

Questo ora interrompe la visualizzazione delle modifiche di Team Explorer. Non ci sono modifiche mostrate con quanto segue dalla finestra Output:

Schermata dell'errore dalla scheda di output

Come tale, aggiungerò il file al file .gitignore e invierò il PR . Sarebbe bene alla fine imparare cos'è questo file e da dove proviene ...


61
Ho aggiornato Windows 10 con l'aggiornamento dell'anniversario e ora ho generato questo file.
Fabian Vilers,

16
L'aggiunta di * .jfm al file .gitignore sembra risolvere il problema.
Fabian Vilers,

4
Devo scherzare: hai provato a disinstallare e reinstallare?
pookie,

3
+1 Si è verificato il problema per cui non sono state visualizzate modifiche. L'eliminazione del file jfm dal controllo del codice sorgente tramite gitbash e l'aggiunta al file gitignore ha risolto il problema dopo molte difficoltà. Ho dovuto chiudere Visual Studio per far funzionare git "git rm -rf" .. Che incubo!
Noobie3001,

2
@ Noobie3001 ha funzionato anche per me. Aggiungi * .jfm a .gitignore, quindi elimina .jfm dal repository git remoto, elimina le modifiche locali e sincronizza con il telecomando. Problema risolto.
Ivan G.

Risposte:


187

Questo è un problema causato dal motore ESENT su cui fanno affidamento i progetti SQL che aggiungono un nuovo file. Questa è una nuova funzionalità di Windows 10 Anniversary Edition per evitare la perdita di dati, ma il fatto che SQL Projects memorizzi il file cache .dbmdl nella radice del progetto significa che questo file bloccato viene aggiunto al controllo del codice sorgente Git.

Appunti:

  • È stata accettata una richiesta pull per risolvere questo problema in GitIgnore e il team di Visual Studio sta lavorando per includerlo negli aggiornamenti futuri. Ciò garantirà che per i nuovi progetti il ​​file .gitignore includa .jfm e che il problema non si verifichi
  • Il team SSDT principale sta lavorando per fornire una soluzione a questo in un futuro aggiornamento, ma per ora la soluzione migliore è quella di aggiungere manualmente come discusso nei commenti.

Divulgazione : lavoro nel team SSDT per Microsoft.


grazie anche per aver finalmente fornito una risposta reale a che file è!
The Bearded Llama,

1
Mi dispiace per il PR - Avevo seguito questo problema internamente e ho seguito i passaggi consigliati (incluso fare un PR). Ho notato solo dopo aver inviato che questo post faceva riferimento a un PR separato e da allora lo avevano praticamente accettato! La lezione ha imparato a leggere i post di StackOverflow più attentamente :-) A proposito, Technocore aveva la risposta precedente a questa domanda ma è stata eliminata per qualche motivo. Grazie per aver sollevato questo problema e ci scusiamo per l'inconveniente: siamo stati colti di sorpresa dalla modifica della funzione ESENT e stiamo ancora cercando di risolverlo correttamente.
Kevin Cunnane,

Nessun problema amico, le cose PR non erano poi così importanti. Non sono sicuro del motivo per cui è stato rimosso; forse non era così dettagliato / preciso come doveva essere per una risposta.
The Bearded Llama,

8
Ho appena colpito questo bug e mi ci è voluta mezza giornata per capire cosa stesse succedendo. Scherzi a parte, chi ha deciso di mettere il dbmdl nella radice del progetto in primo luogo? Non dovrebbe essere in / obj o qualcosa del genere? Voglio dire, ogni tanto devo eliminare .dbmdl solo per far funzionare SSDT. Ha confuso l'inferno del mio team quando ho spiegato che "PULITO" in realtà non cancella questo file perché non è in obj, e ora lo sciocco dbmdl ha distrutto altre poche ore della mia produttività con questa assurdità di jfm.
Pxtl

1
Cordiali saluti, questo è l'ultimo VS .gitgnore ora. Ho appena eliminato quello vecchio e ho dovuto ricrearlo da VS e questo ha risolto il problema per il mio team. Fai solo attenzione se hai voci personalizzate nel tuo file esistente.
Gabe,

67

L'asporto da altri è ...

  • Aggiungi *.jfmal tuo.gitignore

(In PowerShell Add-Content .\.gitignore *.jfm)

  • Potrebbe essere necessario eseguire git rm --cached *.jfm

1
Cento volte SÌ a questa risposta. Chiaro, semplice e ha funzionato. A parte questo, ho rinunciato a SSDT e sqlproj poco fa. E questo tipo di problema era esattamente il motivo. Ora mi affido a semplici script sql vecchi e migrazioni personalizzate. Molto più gestibile e meno mal di testa (che pensi sarebbe il contrario).
pimbrouwers,

1
Se il tuo .gitignorepotrebbe non terminare con una nuova riga, utilizza Add-Content .\.gitignore `r`n*.jfmper assicurarti che finisca sulla propria linea.
Inserito il

git rm --cached * .jfm ha davvero aiutato. Grazie mille!
Valeriy Lyuchyn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.