EnvDTE Обновить документ - PullRequest
       2

EnvDTE Обновить документ

3 голосов
/ 23 февраля 2012

У меня есть открытый документ в Visual Studio.Пока мой шаблон T4 работает, он пишет в исходный файл открытого документа.Когда шаблон T4 закончит это делать, я хочу, чтобы Visual Studio перезагрузила соответствующий документ из его источника.Шаблон T4 запускается автоматически при сохранении документа, который я хочу обновить.

Как я могу это сделать?Я пробовал команду «View.Refresh», но там написано «Недоступно».Я также попытался закрыть и снова открыть документ, но я получаю следующее исключение при его повторном открытии:

Error   3   Running transformation: System.Runtime.InteropServices.COMException (0x8004000C): User canceled out of save dialog (Exception from HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED))
   at EnvDTE.ProjectItem.Open(String ViewKind)

1 1

Я получил:

var hostServiceProvider = (IServiceProvider)Host;
EnvDTE.DTE dte = (EnvDTE.DTE)hostServiceProvider.GetService(typeof(EnvDTE.DTE));
var projectItem = dte.ActiveDocument.ProjectItem;
var activeDocument = dte.ActiveDocument;

dte.ActiveDocument.Close(EnvDTE.vsSaveChanges.vsSaveChangesNo); // vsSaveChanges value doesn't make a difference - still throws error
projectItem.Open(EnvDTE.Constants.vsViewKindPrimary);
...