Connect.Exec () не выполняется (надстройка Visual Studio 2010) - PullRequest
1 голос
/ 30 августа 2011

Я пытаюсь открыть форму из кода надстройки Visual Studio, класс Connect:

public void Exec(
        string pCommandName,
        vsCommandExecOption pExecuteOption,
        ref object pVarIn,
        ref object pVarOut,
        ref bool pHandled)
    {
        pHandled = false;
        if (pExecuteOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
        {
            if (pCommandName == "VisualStudioSolutionGenerator.Connect.VisualStudioSolutionGenerator")
            {
                Form1 form = new Form1();
                form.Show();
                pHandled = true;
                return;
            }
        }
    }

Это прекрасно работает, если Form1 определена в той же сборке, но если она находится в другой сборке., Exec () даже не будет вызываться.Я видел похожий вопрос, который был опубликован здесь , но на него не было ответа.

Кто-нибудь знает, почему это так?Спасибо

1 Ответ

2 голосов
/ 03 сентября 2011

Вот что решило проблему:

Я создал проект надстройки с именем «VisualStudioSolutionGenerator» таким же образом на другом компьютере и получил эту ошибку, когда попытался запустить его в режиме отладки:
«Не удалось загрузить надстройку <имя_компонента> или вызвало исключение ... ".
Код ошибки 80070002, что означает, что некоторые файлы отсутствуют.
Поэтому я проверил «C: \ Users \ <имя_пользователя> \ Documents \ Visual Studio 2010 \ Addins \ VisualStudioSolutionGenerator - For Testing.AddIn» (на компьютере с Windows 7) и тег Assembly в этом файле указывает на « /bin/VisualStudioSolutionGenerator.dll». Этот файл существует, но библиотеки для других проектов решений, используемых проектом надстройки, включая проект с «Form1», не были скопированы в эту папку при сборке, они присутствуют только в папке « / bin / Debug /».

Изменение тега Assembly в файле надстройки «Для тестирования» на « / bin / Debug /» удалило исключение, и Connect.Exec () теперь выполняется нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...