我不得不升级到Visual Studio 2015,目前我的VSPackage存在问题。我需要一个VersionContralServer对象,但每次调试时,DTE都为空。
DTE2 dte = (DTE2)Package.GetGlobalService(typeof(DTE2));
VersionControlExt versionControlExt = dte.GetObject("Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt") as VersionControlExt;
VersionControlExplorerExt versionControlExplorerExt = versionControlExt.Explorer;
VersionControlServer version = versionControlExplorerExt.Workspace.VersionControlServer;
任何帮助表示感谢。
答案 0 :(得分:0)
您对Package.GetGlobalService()的调用存在轻微错误。
DTE2 dte =(DTE2)Package.GetGlobalService(typeof( SDTE ));
在幕后,所有GetGlobalService调用都在调用IOleServiceProvider.QueryService方法,该函数需要一个接口guid和一个服务guid。 typeof(DTE2),返回DTE2接口的接口guid。
您可能看到一些样本未正确使用typeof(DTE)来返回服务guid。但这只能起作用,因为DTE服务guid id和DTE接口guid id恰好相同。但一般来说,您应该始终使用服务guid id。