Почему мой пользовательский инструмент Visual Studio 2010 не найден?
Мой пользовательский инструмент выглядит следующим образом:
Class: FooBar.Blah.Tools.DataContextClassGenerator
Assembly: FooBar.Blah.Tools.DataContextClassGenerator
Project: FooBar.Blah.Tools.DataContextClassGenerator
Задача CreatePkgDef, включенная из файла проекта, если для параметра GeneratePkgDef установлено значение true, создает следующий файл pkgdef в выходных данных сборки.
[$RootKey$\Generators\{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}\DataContextClassGenerator]
@="Foo Bar DataContext Class Generator"
"CLSID"="{2155fcee-7012-400b-a6b3-5d8d0e34de6c}"
"GeneratesDesignTimeSource"=dword:00000001
"GeneratesSharedDesignTimeSource"=dword:00000000
[$RootKey$\Generators\{164B10B9-B200-11D0-8C61-00A0C91E29D5}\DataContextClassGenerator]
@="Foo Bar DataContext Class Generator"
"CLSID"="{2155fcee-7012-400b-a6b3-5d8d0e34de6c}"
"GeneratesDesignTimeSource"=dword:00000001
"GeneratesSharedDesignTimeSource"=dword:00000000
[$RootKey$\CLSID\{2155fcee-7012-400b-a6b3-5d8d0e34de6c}]
@="FooBar.Blah.Tools.DataContextClassGenerator"
"InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL"
"Class"="FooBar.Blah.Tools.DataContextClassGenerator"
"CodeBase"="$PackageFolder$\FooBar.Blah.Tools.DataContextClassGenerator.dll"
"ThreadingModel"="Both"
Когда я устанавливаю расширение VSIX, я вижу соответствующие ключи под ключом 10.0_Config. Тем не менее, когда я устанавливаю DataContextClassGenerator в качестве пользовательского инструмента, VS2010 жалуется на то, что не нашел инструмент.
Я попытался включить ActivityLog для VS2010 и проверил его, инструмент обнаружен и загружен при запуске VS2010, но все равно, как будто его даже там нет.
Я в конце своего остроумия и буду признателен за любую помощь.
Я установил VSIX для установки в Ultimate, Premium и Professional выпусках VS2010. Во время установки он говорит, что нашел версию Ultimate, и говорит, что установил ее, хотя у меня на компьютере установлена версия Premier VS2010.
1 ответ
Проблема заключалась в том, что, хотя сам мой пользовательский класс инструмента был установлен в ComVisible(true), базовые классы не были, и поэтому Visual Studio загружал его неправильно, потому что вы не можете этого сделать. Очевидно, что вся иерархия классов должна быть ComVisible (true).