TFS Программное открытие окна разрешения конфликтов

Я использую расширение VS с возможностью объединения наборов изменений. Это расширение открывает окно «Разрешить конфликты», если обнаружены конфликты, позволяя мне выбрать «Объединить автоматически» (отключено), «Объединить в инструменте слияния», «Взять источник», «Взять цель» и т. д.

Проблема в том, что окно модальное. Поэтому, если я хочу просмотреть слияние в инструменте слияния по умолчанию, он открывает сравнение в виде окна с вкладками за окном «Разрешить конфликты».

Код, открывающий окно «Разрешить конфликты», выглядит следующим образом:

try
{
    Assembly assres = Assembly.GetAssembly(typeof(ControlAddItemsExclude));
    var dlgResolveConflicts = assres.GetTypes().FirstOrDefault(x => x.Name == "DialogResolveConflicts");
    dlgResolveConflicts.InvokeMember("ResolveConflicts", BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Static, null, null, new object[] { wrkspc, null, true, null });
}
catch(Exception ex)
{
    Utilities.OutputCommandString(ex.ToString());
    MessageBox.Show(ex.ToString());
}

Не могли бы вы, ребята, помочь мне открыть окно «Разрешить конфликты» в немодальном режиме, чтобы я мог взаимодействовать с инструментом сравнения слияния?

С уважением, Ассер Фаренхольц


person Asser Fahrenholz    schedule 26.10.2015    source источник
comment
Visual Studio 2013: 12.0.31101.00, обновление 4   -  person Asser Fahrenholz    schedule 26.10.2015
comment
.NET Framework: 4.5.51650   -  person Asser Fahrenholz    schedule 26.10.2015
comment
Я также провел обширный поиск на различных форумах MSDN, но несколько вопросов, которые имели сходство с моим, остались без ответа.   -  person Asser Fahrenholz    schedule 26.10.2015
comment
Я попытался углубиться в сборки и обнаружил, что объект UIHost, используемый методом ResolveConflicts, использует метод ShowModalDialog(). Я попробую использовать UIHost.enableModeless() и посмотрю, будет ли это иметь значение.   -  person Asser Fahrenholz    schedule 26.10.2015


Ответы (1)


Я нашел обходной путь:

Когда открывается модальное окно с необходимыми ручными конфликтами, я открываю другой VS2013, перехожу к ожидающим изменениям, иду к разрешению конфликтов, выполняю все ручные слияния с помощью инструмента сравнения. Как только это будет сделано, закройте дополнительный VS2013, вернитесь к исходному VS2013 (с открытым модальным окном), нажмите «Обновить», закройте окно и продолжите.

person Asser Fahrenholz    schedule 28.10.2015