因此,在 Visual Studio 扩展中,当按下菜单项时,我想检查团队资源管理器中的当前页面是什么。
所以,首先我得到 ITeamExplorer 对象:
ITeamExplorer teamExplorer = (ITeamExplorer)this.GetService(typeof(ITeamExplorer)).
接下来,我想确保我位于待更改页面。
if(teamExplorer != null)
{
if(teamExplorer.currentPage is ???)
{
//Do stuff.
}
}
现在,如果我在调试中运行它(注释掉最后一个 if 部分以便编译,将团队资源管理器打开到挂起的更改页面,并在获取 ITeamExplorer 对象后中断,我可以检查它并看到当前页面的类型为 Microsoft.VisualStudio.TeamFoundation.VersionControl.PendingChanges.PendingChangesPageVS
。
但我找不到任何引用可以让我实际比较类型以确保页面属于同一类型。
Microsoft.VisualStudio
有效。 Microsoft.TeamFoundation
有效。但没有 Microsoft.VisualStudio.TeamFoundation
。我检查了引用文献,看看我是否忘记包含它,但它也不存在。
它藏在其他地方吗?在 nuget 包中?也许我需要安装在 Team Foundation Server SDK 中?
编辑1:
在 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies 中找到该 dll。我想我需要看看引用私有(private)程序集需要什么。
编辑2:
将该 dll 复制到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ReferenceAssemblies\v4.5 允许我引用它。但我觉得我做了一些不应该做的事情。
最佳答案
所以,从我的回答中,我找到了引用资料。我将 Microsoft.VisualStudio.TeamFoundation.VersionControl 从 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies
复制到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ReferenceAssemblies\v4.5
我可以引用它。我可能还可以通过浏览到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies
来包含该 dll。
话虽这么说,我想要的类(class)是内部的,所以这没有帮助。相反,我做了一些更简单的事情,不需要 dll。我刚刚使用了 teamExplorer.CurrentPage.GetType().ToString() 并将其与比较我期望的类名的字符串进行了比较(“Microsoft.VisualStudio.TeamFoundation.VersionControl.PendingChanges.PendingChangesPageVS”
)。
关于c# - Microsoft.VisualStudio.TeamFoundation 引用在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27431632/