我使用procmon工具发现,在切换到Microsoft Git Provider时,Visual Studio会访问此dll。
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.Git.Provider.dll"
我编辑了该dll的权限,使得用户“Everyone”无法访问它,然后VisualStudio停止在启动时切换回“Microsoft Git Provider”。 这样做意味着即使您尝试选择当前源代码控制插件的“Microsoft Git Provider”,它也不会执行任何操作,而只会显示您以前的选择。
.cs
文件时收到了一个错误:Microsoft.VisualStudio.Composition.CompositionFailedException: Expected 1 export(s) with contract name "Microsoft.VisualStudio.CodeSense.Git.Providers.Collaboration.SccTracking.IRepositoryEvents
。 - Wayne BlossProgram Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
,并执行 devenv /updateconfiguration
和 devenv /clearcache
,如 此处所述。 - Wayne Blosscd \c:\Program Files (x86)
,然后执行了del *TeamFoundation.Git.*.dll /S /F /Q
。当VS打开时,我会得到一整个错误信息列表,但我能够在VS中使用TFS和在命令行中使用git来处理同一个项目。我还向微软投诉。这很愚蠢。你的情况可能有所不同,如往常一样,请自行承担风险。 - ruffin更新2:
这里有一个扩展,可以在打开 git 解决方案时禁用 MS Git 提供程序: http://visualstudiogallery.msdn.microsoft.com/146b404a-3c91-46ff-932a-fb0f8b826f94
该解决方案似乎不再起作用(正如博客文章中所提到的):
对于那些遇到此文章并希望出于其他原因禁用提供程序的人(例如性能或文件被 ReSharper 读取为只读以进行重构),我运行了这个注册表 hack 来永久删除 MS GIT 源代码控制提供程序:
https://blog.rendle.io/disable-the-git-source-control-add-in-in-vs2013-permanently/
简而言之:
关闭 VS2013 然后删除整个键(或其中一个包含 GitSCCProvider 值的键):
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\SourceControlProviders\{11b8e6d7-c08b-4385-b321-321078cdd1f8}
在注册表中搜索相同的 GUID 11b8e6d7-c08b-4385-b321-321078cdd1f8
并删除这些值或条目。
编辑:
如果需要使用 TFS Git 存储库以及 Team Explorer 中的相关信息(如生成等),请勿删除 GIT SCC 提供程序,因为那样也会出问题。
感谢 @Ade-Miller,这正是我需要听到的。
事实证明,我遇到的问题是我正在工作的项目的一个父级文件夹在Git中被设置为存储库:C:\users[me]。不确定是如何发生的。但显然,即使项目本身设置为使用TFS,VS也不喜欢尝试弄清楚你在这种情况下究竟在做什么。从顶层文件夹中删除“.git”文件夹使一切开始表现更好。
以下方法对我有用(来源:http://researchaholic.com/2015/02/02/remove-the-microsoft-gitprovider-from-visual-studio-2013/)
注意我添加的两个额外步骤:
1. 在删除前,导出所有注册表键的备份。
2. 删除所有 {11b8e6d7-c08b-4385-b321-321078cdd1f8} 的实例。
只需要再次运行安装程序...
在我的情况下,安装程序是 Microsoft.TeamFoundation.Git.Provider.msi
并选择 移除
选项。
git init
命令来初始化某个目录?你能否在TFS工作文件夹中执行dir .git /s
命令,看看是否有返回结果? - Edward Thomson