Надстройка Visual Studio 2008 исчезает после первого щелчка - PullRequest
0 голосов
/ 23 ноября 2011

Я занимаюсь разработкой простого дополнения VS 2008.
Теперь у меня есть только автоматически сгенерированный код базовых автоматически сгенерированных файлов.
Это файл "TestsGenerator - For Testing.AddIn":

<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<Extensibility xmlns="http://schemas.microsoft.com/AutomationExtensibility">
    <HostApplication>
        <Name>Microsoft Visual Studio Macros</Name>
        <Version>9.0</Version>
    </HostApplication>
    <HostApplication>
        <Name>Microsoft Visual Studio</Name>
        <Version>9.0</Version>
    </HostApplication>
    <Addin>
        <FriendlyName>CSUnit tests generator</FriendlyName>
        <Description>Generates tests for csUnit basing on TestingTable.xml file</Description>
        <Assembly>D:\Nova\dev\RecipeConverter\Sources\TestsGenerator\bin\TestsGenerator.dll</Assembly>
        <FullClassName>TestsGenerator.Connect</FullClassName>
        <LoadBehavior>0</LoadBehavior>
        <CommandPreload>1</CommandPreload>
        <CommandLineSafe>0</CommandLineSafe>
    </Addin>
</Extensibility>

Мне удается отладить код, когда я запускаю проект в F5. Теперь вот список вызовов функций после нажатия F5:

Конструктор ()
OnConnect ()

Я нажимаю на кнопку Аддина в меню Сервис:

OnConnect ()
Exec ()

И !!! Кнопка исчезает из меню Сервис !!!
Кто-нибудь может сказать мне, ПОЧЕМУ это происходит!?
Спасибо за продвижение.

1 Ответ

0 голосов
/ 23 ноября 2011

ОК, по правде говоря, не все файлы были сгенерированы автоматически, я получаю часть их из другой надстройки.
В любом случае.В то время как полное имя надстройки класса Connect было: TestsGenerator.Connect, функция QueryStatus выглядела так:

public void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText)
{
    if (neededText == vsCommandStatusTextWanted.vsCommandStatusTextWantedNone)
    {
        if (commandName == "MyAddin2.Connect.MyAddin2")
        {
            status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusEnabled;
            return;
        }
    }
}

После того, как я изменил условие, после того, как все начало работать:

if (commandName == "TestsGenerator.Connect.MyAddin2")
...