Visual Studio 2015 Database Project directory contains a file with extension jfm
假设我们有一个名为MyDatabase的数据库项目,那么一个名为MyDatabase.jfm的文件将出现在项目目录的根目录中。
- 当项目在Visual Studio中打开时,它被独占锁定。
- 它是一个二进制文件
- 它最近才开始出现(过去几天)
我做过谷歌搜索,但没有提供任何见解。有一些旧软件的参考,但大多数结果是垃圾邮件/特洛伊木马软件。我也查过,但也没有任何结果。
有人知道它是什么,为什么在那里吗?
计划是将其添加到用于Visual Studio的gitignore文件中,但我需要知道首先提交pr是什么。
更新
这将破坏团队资源管理器更改视图。在输出窗口中没有显示以下更改:
。
因此,我将把这个文件添加到.gitignore文件并提交pr。最终了解这个文件是什么以及它来自哪里将是一件好事…
- 我刚刚在vs 2015创建了数据库项目。它似乎不在那里,即使在我编译了项目之后。
- 也不是我的,只是几天前我说过的
- 我的一些解决方案有(solution root)与iuplationv14vbcs.cachestorage.jfm文件,大小相同(16384),内容相似。因为它们在vbcs.cache下,所以我猜它们是某种缓存,可以根据需要重新生成。而且不应该办理登机手续。
- @Christorng谢谢你提供的信息;我猜它不需要登记;但是,为了提交公关,我需要一些"官方"信息;我只是觉得很奇怪,在任何地方都没有提到这个:s
- 我最近在另一台开发人员的机器上看到了一个.jfm文件。它与SSDT项目命名相同:path\to\solution\DatabaseProjectName\DatabaseProjectName.jfm‌&8203;。也有兴趣知道它是什么。
- @gabrielmaldi yup在任何MS站点中都没有提到它,在vs中也没有"特殊"的解释(例如,dbmdl是您的数据库模型文件)
- 我最近将Windows10更新为FastRing(版本10.0.14388),现在正在获取此文件。如果我试图删除它,会得到一个错误,说明文件正在使用中。使用解锁工具进行检查时,锁定它的是Visual Studio。
- 我在Win 10预览版14388.0上,但与2013年相比,现在也有这个文件。
- @斯蒂芬普赖斯是的,没错,是vs锁住了文件…但不知道它是什么,从哪里来…
- 有没有可能在Eclipse的任何地方都安装了团队资源管理器?我只是记得他们最近发布了iTeliJ的东西,所以用手指指向一个随机的Java标准化过程。我自己也没见过安装了最新SSDT的vs 2013或2015。
- @恐怕我甚至不知道Eclipse是什么(现在我在谷歌上搜索了一下),所以我不认为是这样的:(
- 我已经用周年更新更新了Windows 10,现在正在生成此文件。
- 将*.jfm添加到.gitignore文件似乎可以解决此问题。
- 我也在同一条船上安装带有周年纪念的Windows10,现在我有了文件。
- 我可以确认我看到新的文件出现了。他们阻止了我的Git Add
- 我不得不开个玩笑:你试过卸载和重新安装吗?
- +我有一个问题,根本没有变化。通过Gitbash从源代码管理中删除JFM文件并将其添加到GitIgnore文件中,解决了这个问题。必须关闭Visual Studio才能使git"git rm-rf"正常工作。真是个噩梦!
- @努比3001也为我工作。将*.jfm添加到.gitignore,然后从远程git repo中删除.jfm,放弃本地更改并与远程同步。问题已解决。
- 在Windows10周年纪念日里,所有看到这个的人都打开了新的UbuntuBash功能吗?只是想知道。
- 可以确认它似乎与Ubuntu工具无关,因为这里的开发者没有打开它,但仍在获取这些文件。
- 将*.jfm添加到.gitignore并不能完全适用于我和一些同事。必须从Gitbash运行git rm--cached database.jfm才能再次看到更改,还需要存储更改并从Gitbash签出分支,否则vs不会让您更改分支。一直是工作的噩梦。
这是由添加新文件的SQL项目所依赖的esent引擎引起的问题。这是Windows 10周年版中为避免数据丢失而提供的一项新功能,但事实上,SQL项目将.dbmdl缓存文件存储在项目根目录下意味着该锁定的文件将添加到Git源代码管理中。
笔记:
- 已接受在GitIgnore中修复此问题的请求,并且Visual Studio团队正在努力在将来的更新中包含此请求。这将确保对于新项目,.gitignore文件包含.jfm,并且不会出现问题。
- 核心SSDT团队正在努力在将来的更新中提供解决方案,但目前最好的解决方案是按照注释中讨论的方式手动添加。
披露:我在微软的SSDT团队工作。
- 还感谢您最终提供了一个真正的文件答案!
- 抱歉,关于公关-我一直在内部跟进这个问题,并遵循建议的步骤(包括做公关)。我只注意到在我提交后,这篇文章引用了一个单独的公关,到那时他们基本上已经接受了!学到了更仔细阅读stackoverflow帖子的经验:(-)顺便说一下,technocore以前回答过这个问题,但由于某种原因被删除了。感谢您提出此问题,并对由此带来的不便表示歉意-我们对esent功能的更改感到意外,仍在寻求正确的修复。
- 不用担心,伙计,公关方面的事情并不那么重要。不知道为什么它会被删除;也许它不像回答问题所需要的那样详细/准确。
- 我刚碰到这个虫子,花了半天时间才弄清楚到底发生了什么事。说真的,谁首先决定将DBMDL放到项目根目录中?是不是应该是in/obj或什么?我的意思是,偶尔我需要删除.dbmdl来保持ssdt正常工作。当我解释说"干净"并没有真正删除这个文件,因为它不在obj中时,它把我的团队搞得一团糟,现在愚蠢的dbmdl已经用这个jfm的废话破坏了我的工作效率的另外几个小时。
- 仅供参考,这是最新的vs.gitgnore版本。我刚刚删除了旧的,并让vs重新创建它,这为我的团队解决了问题。如果在现有文件中有自定义条目,请小心。
其他人的外卖是…
(在PowerShell中,Add-Content .\.gitignore *.jfm)
- 您可能需要运行git rm --cached *.jfm
- 对这个答案一百次肯定。清晰,简单,而且有效。顺便说一下,我不久前放弃了固态硬盘和sqlproj。这类问题正是原因所在。现在,我依赖简单的老SQL脚本和自定义迁移。更容易控制和更少的头痛(你认为恰恰相反)。
- 如果您的.gitignore可能不会以换行结束,请使用Add-Content .\.gitignore `r`n*.jfm确保它以自己的行结束。
- Git-RM——缓存的*.jfm真的很有帮助。非常感谢你!