O diretório do Visual Studio 2015 Database Project contém um arquivo com a extensão jfm

242

Supondo que tenhamos um projeto de banco de dados chamado MyDatabase, um arquivo chamado MyDatabase.jfmaparecerá na raiz do diretório do projeto.

  • Ele é bloqueado exclusivamente enquanto o projeto está aberto no Visual Studio
  • É um arquivo binário
  • Apenas começou a aparecer recentemente (nos últimos dois dias)

Eu fiz uma pesquisa no Google, que não ofereceu nenhum insight. Existem algumas referências a alguns softwares antigos, mas a maioria dos resultados é spam / trojanware. Eu também procurei no SO, mas isso também não produziu nenhum resultado.

Alguém sabe o que é e por que está lá?

O plano é adicioná-lo ao arquivo gitignore do Visual Studio , mas preciso saber o que é o primeiro a enviar o PR ...

ATUALIZAR

Agora, isso está quebrando a exibição Alterações do Team Explorer. Não há alterações sendo mostradas com o seguinte na janela Saída:

Captura de tela do erro na guia Saída

Como tal, adicionarei o arquivo ao arquivo .gitignore e submeterei o PR . Seria bom, eventualmente, aprender o que é esse arquivo e de onde ele veio ...

A Lhama Barbuda
fonte
61
Atualizei o Windows 10 com a atualização de aniversário e agora esse arquivo está sendo gerado.
Fabian Vilers
16
Adicionar * .jfm ao arquivo .gitignore parece corrigir o problema.
Fabian Vilers
4
Eu tenho que brincar: Você tentou desinstalar e reinstalar?
Pookie
3
+1 Tinha o problema em que nenhuma alteração estava aparecendo. Excluir o arquivo jfm do controle de origem via gitbash e adicioná-lo ao arquivo gitignore corrigiu o problema após muita luta. Tive que fechar o Visual Studio para que o git "git rm -rf" funcionasse .. Que pesadelo!
Noobie3001
2
@ Noobie3001 funcionou para mim também. Adicione * .jfm ao .gitignore, depois exclua .jfm do repositório git remoto, descarte as alterações locais e sincronize com o remote. Problema corrigido.
Ivan G.

Respostas:

187

Esse é um problema causado pelo mecanismo ESENT com o qual os projetos SQL adicionam um novo arquivo. Esse é um novo recurso do Windows 10 Anniversary Edition para evitar a perda de dados, mas o fato de o SQL Projects armazenar o arquivo de cache .dbmdl na raiz do projeto significa que esse arquivo bloqueado é adicionado ao controle de origem do Git.

Notas:

  • Uma solicitação de recebimento para corrigir isso no GitIgnore foi aceita e a equipe do Visual Studio está trabalhando para incluí-lo em futuras atualizações. Isso garantirá que, para novos projetos, o arquivo .gitignore inclua .jfm e o problema não ocorra
  • A equipe principal do SSDT está trabalhando para fornecer uma solução para isso em uma atualização futura, mas por enquanto a melhor solução é adicionar manualmente conforme discutido nos comentários.

Divulgação : trabalho na equipe SSDT da Microsoft.

Kevin Cunnane
fonte
também obrigado por finalmente fornecer uma resposta real para o que é o arquivo!
The Bearded Llama
1
Sinto muito pelo PR - eu estava acompanhando esse problema internamente e segui as etapas recomendadas (incluindo fazer um PR). Só notei depois que enviei que este post referenciava um PR separado e até então eles basicamente o aceitaram! Lição aprendida a ler as postagens StackOverflow com mais cuidado :-) A propósito, o Technocore teve a resposta anterior a esta pergunta, mas ela foi excluída por algum motivo. Agradecemos por levantar esse problema e pedimos desculpas pelo inconveniente - fomos surpreendidos pela alteração do recurso ESENT e ainda estamos tentando corrigir o problema.
Kevin Cunnane
Não se preocupe, companheiro, o material de relações públicas não era realmente tão importante. Não sei por que foi removido; talvez não tenha sido tão detalhado / preciso quanto necessário para obter uma resposta.
The Bearded Llama
8
Acabei de acertar esse bug e levei meio dia para descobrir o que estava acontecendo. Sério, quem decidiu colocar o dbmdl na raiz do projeto em primeiro lugar? Não deveria estar em / obj ou algo assim? Quero dizer, ocasionalmente, tenho que excluir o .dbmdl apenas para manter o SSDT funcionando. Confundiu muito a minha equipe quando expliquei que "CLEAN" na verdade não exclui esse arquivo porque não está em obj, e agora o bobo dbmdl destruiu mais algumas horas da minha produtividade com esse absurdo jfm.
Pxtl
1
FYI, este é o mais recente VS.gitgnore agora. Acabei de excluir o antigo e o VS o recriou e isso resolveu o problema da minha equipe. Apenas tome cuidado se você tiver entradas personalizadas em seu arquivo existente.
Gabe
67

O takeaway de outros é ...

  • Adicione *.jfmao seu.gitignore

(No PowerShell, Add-Content .\.gitignore *.jfm)

  • Pode ser necessário executar git rm --cached *.jfm
emragins
fonte
1
Cem vezes SIM a esta resposta. Claro, simples e funcionou. Como um aparte, eu desisti do SSDT e do sqlproj's há um tempo atrás. E esse tipo de problema era exatamente o porquê. Agora eu confio em scripts sql antigos simples e em migrações personalizadas. Muito mais gerenciável e menos dores de cabeça (o que você acha que seria o oposto).
Pimbrouwers
1
Se você .gitignorenão terminar com uma nova linha, use-a Add-Content .\.gitignore `r`n*.jfmpara garantir que ela termine em sua própria linha.
Codificado em 28/02/19
git rm --cached * .jfm realmente ajudou. Muito obrigado!
Valeriy Lyuchyn 28/03/19