【问题标题】:Visual Studio 2015 Database Project directory contains a file with extension jfmVisual Studio 2015 数据库项目目录包含扩展名为 jfm 的文件
【发布时间】:2016-10-08 20:10:29
【问题描述】:

假设我们有一个名为 MyDatabase 的数据库项目,那么项目目录的根目录中会出现一个名为 MyDatabase.jfm 的文件。

  • 项目在 Visual Studio 中打开时被独占锁定
  • 这是一个二进制文件
  • 最近才开始出现(过去几天)

我进行了 Google 搜索,但没有提供任何见解。有一些旧软件的引用,但大部分结果都是垃圾邮件/木马软件。我也看过 SO,但这也没有产生任何结果。

有谁知道它是什么以及为什么会在那里?

计划是添加到gitignore file for Visual Studio,但我需要知道它是什么先提交PR...

更新

这现在破坏了团队资源管理器更改视图。 “输出”窗口中的以下内容没有显示任何更改:

因此,我会将文件添加到 .gitignore 文件和 submitting the PR。最终了解这个文件是什么以及它来自哪里会很好......

【问题讨论】:

  • 我已经用周年更新更新了 Windows 10,现在我已经生成了这个文件。
  • 将 *.jfm 添加到 .gitignore 文件似乎可以解决问题。
  • 开个玩笑:你试过卸载重装吗?
  • +1 有一个根本没有变化的问题。通过 gitbash 从源代码管理中删除 jfm 文件并将其添加到 gitignore 文件中,经过一番努力后解决了这个问题。必须关闭 Visual Studio 才能让 git "git rm -rf" 工作。真是一场噩梦!
  • @Noobie3001 也为我工作。将 *.jfm 添加到 .gitignore,然后从远程 git repo 中删除 .jfm,丢弃本地更改并与远程同步。问题已修复。

标签: visual-studio-2015 sql-server-data-tools database-project


【解决方案1】:

这是由 SQL 项目添加新文件所依赖的 ESENT engine 引起的问题。这是 Windows 10 周年纪念版中的一项新功能,可避免数据丢失,但 SQL 项目将 .dbmdl 缓存文件存储在项目根目录下这一事实意味着此锁定文件已添加到 Git 源代码控制中。

注意事项:

  • 在 GitIgnore 中修复此问题的 pull request 已被接受,Visual Studio 团队正在努力将其包含在未来的更新中。这将确保对于新项目的 .gitignore 文件包含 .jfm 并且不会出现问题
  • 核心 SSDT 团队正在努力在未来的更新中为此提供解决方案,但目前最好的解决方案是手动添加,如 cmets 中所述。

披露:我在 Microsoft 的 SSDT 团队工作。

【讨论】:

  • 也感谢您终于提供了关于文件是什么的真实答案!
  • 对 PR 感到抱歉 - 我一直在内部跟进此问题并遵循推荐的步骤(包括进行 PR)。我只是在提交后才注意到这篇文章引用了一个单独的 PR,到那时他们基本上已经接受了!学到的教训是更仔细地阅读 StackOverflow 帖子 :-) 顺便说一句,Technocore 有这个问题的先前答案,但由于某种原因它已被删除。感谢您提出此问题并为给您带来的不便深表歉意 - 我们对 ESENT 功能更改感到惊讶,并且仍在寻求正确修复。
  • 别担心,伙计,公关的东西并不是那么重要。不知道为什么它被删除;也许它没有得到答案所需的详细/准确。
  • 我刚刚遇到了这个错误,我花了半天时间才弄清楚发生了什么。说真的,谁决定首先将 dbmdl 放在项目根目录中?它不应该在 /obj 中吗?我的意思是,有时我必须删除 .dbmdl 以保持 SSDT 正常工作。当我解释说“CLEAN”实际上并没有删除这个文件,因为它不在 obj 中时,它把我的团队搞糊涂了,现在愚蠢的 dbmdl 又用这个 jfm 废话摧毁了我几个小时的工作效率。
  • 仅供参考,这是最新的 VS .gitgnore。我刚刚删除了旧的并让 VS 重新创建它,这为我的团队解决了这个问题。如果您的现有文件中有自定义条目,请小心。
【解决方案2】:

别人的收获是……

  • 将*.jfm 添加到您的.gitignore

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

  • 您可能需要运行git rm --cached *.jfm

【讨论】:

  • 这个答案一百次是的。清晰,简单并且有效。顺便说一句,我不久前放弃了 SSDT 和 sqlproj。而这类问题正是原因所在。现在我依靠普通的旧 sql 脚本和自定义迁移。更易于管理和更少的头痛(你认为会适得其反)。
  • 如果您的 .gitignore 可能不以换行符结尾,请使用 Add-Content .\.gitignore `r`n*.jfm 以确保它以自己的行结束。
  • git rm --cached *.jfm 真的很有帮助。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多