Создание пакета Visual Studio для добавления шаблонов (vspackague Visual Studio SDK)
Я пытаюсь создать пакет Visual Studio, в частности, я хочу создать новый пункт меню в контекстном меню элементов. Как этот:
http://www.diaryofaninja.com/blog/2014/02/18/who-said-building-visual-studio-extensions-was-hard
Я уже получил отображение меню:
Но теперь я хочу настроить обратный вызов для создания файла на основе шаблона (пользовательский шаблон Visual Studio), как, например, когда мы нажимаем "Добавить"> "Класс". Но вместо использования шаблона класса используйте шаблон, созданный мной в моем пользовательском списке. Избегайте времени для поиска шаблона в списке.
В приведенном ниже примере создания кнопки "Добавить новую службу" в первом примере показано, как создать всплывающее окно с помощью:
IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));
Guid clsid = Guid.Empty;
int result;
Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(
0,
ref clsid,
"NewService",
string.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", this.ToString()),
string.Empty,
0,
OLEMSGBUTTON.OLEMSGBUTTON_OK,
OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
OLEMSGICON.OLEMSGICON_INFO,
0, // false
out result));
Я думаю, что должно быть больше сервисов для использования с этими VSPackages, но я не нашел такой метод в ссылке: https://msdn.microsoft.com/en-us/library/bb166217.aspx
Можете ли вы сказать мне, где я могу найти метод для выполнения этой операции. Или как архивировать мою цель.
Обновить:
Я пытаюсь с этим:
var dte = (DTE)GetService(typeof(DTE));
dte.ItemOperations.NewFile(@"General\Text File", "file.txt","7651A701-06E5-11D1-8EBD-00A0C90F26EA");
Но я получаю это исключение:
Исключение типа "System.Runtime.InteropServices.COMException" возникло в NewService.dll, но не было обработано в коде пользователя
Дополнительная информация: недопустимая строка класса Исключение из HRESULT: 0x800401F3 (CO_E_CLASSSTRING)
1 ответ
Решено!
Я использовал следующий кусок кода:
private void MenuItemCallback(object sender, EventArgs e)
{
var dte = (DTE)GetService(typeof(DTE)) as EnvDTE80.DTE2;
var template = @"C:\Users\JuanAntonio\Documents\Visual Studio 2013\Templates\ItemTemplates\MyTemplate.vstemplate";
dte.Solution.Projects.Item(1).ProjectItems.AddFromTemplate(template, "Template.cs");
}