Итак, я пытаюсь отобразить все доступные тестовые классы TFS в редакторе параметров рабочего процесса настраиваемого типа. See my previous question.Получить соединение TFS в редакторе параметров рабочего процесса рабочего процесса
Теперь я могу установить соединение с моим экземпляром TFS с помощью .Net TFS API так же, как и обычное клиентское приложение. Но мне пришлось бы вставить URL-адрес в мою TFS в пользовательской сборке, и этого я бы хотел избежать.
Это заставило меня подумать: этот код работает в Visual Studio, поэтому как-то можно получить информацию о текущем подключении TFS. После поиска в Интернете многие разные сайты показали код о том, как это сделать в обычном расширении Visual Studio. Так что я собрал что-то вроде этого:
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (provider != null)
{
EnvDTE80.DTE2 dte;
dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0");
MessageBox.Show("Got dte: " + dte.ActiveDocument.ToString());
TeamFoundationServerExt ext = dte.DTE.GetObject("Microsoft.VisualStudio.TeamFoundation.TeamFoundationServerExt") as TeamFoundationServerExt;
MessageBox.Show("Got tfs: " + ext);
Я могу получить объект DTE, вызывая метод ToString() дает мне System.__ComObject
, так что эта часть appearantly работает. Но когда я пытаюсь получить объект TeamFoundationServerExt
, я всегда получаю null
Любые советы, почему это не сработает?