<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="EnvDTE80" #>
<#@ include file="T4Toolbox.tt" #>
<#
IServiceProvider serviceProvider = (IServiceProvider)this.Host;
EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)serviceProvider.GetService(typeof(EnvDTE.DTE));
//add a file to a project and add its dependupon build property.
//I want to refresh teh solution explorer window to show the hierarchy between 2 files
//You will see this kind of relationship between Forms.cs and Form1.Designer.cs files.
EnvDTE.UIHierarchy solExplorer = dte.ToolWindows.SolutionExplorer;
solExplorer.Parent.Activate();
dte.ExecuteCommand("View.Refresh", string.Empty);
Я пытаюсь обновить окно инструментов обозревателя решений, чтобы я мог видеть вновь созданные файлы, вложенные.Я знаю, что шаблоны T4 выполняются в одном домене приложения, а вызовы выполняются в домене приложений Visual Studio с использованием удаленного взаимодействия.Я получаю эту ошибку о сериализации.Таким образом, есть способ, которым я могу обновить окно инструмента обозревателя решений (solExplorer.Parent), сначала активировав его (мне сказали).
Введите 'Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase' in Assembly 'Microsoft.VisualStudio.Platform.WindowManagement, версия = 10.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'не помечена как сериализуемая.
Обновление : на основе комментария Герета.
Спасибо, Герет, я пробовал это, но он возвращает COMException,
У меня нет ошибки о сериализации Microsoft.VisualStudioКласс .Platform.WindowManagement.DTE.WindowBase и метод Activate, похоже, успешно выполнены. Ошибка теперь в методе dte.ExecuteCommand .
//object dteObject = GetCOMService(serviceProvider, typeof(EnvDTE80.DTE2));
object dteObject1 = GetCOMService(serviceProvider, typeof(EnvDTE.DTE));
EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)dteObject1;
При выполнении этой строки возникло исключение COMException:
dte.ExecuteCommand("View.Refresh", string.Empty);
Сообщение "Ошибка HRESULT E_FAIL был возвращен извызов компонента COM. "
Источник" EnvDTE80 "
StackTrace" в EnvDTE80.DTE2.ExecuteCommand (String CommandName, String CommandArgs)
ErrorCode -2147467259
Что попробовать дальше?
Спасибо, Рад