
A mellékelt példa használatához a modulhoz kapcsolódó bejegyzést el kell helyezni a Rendszerleíró adatbázisban. Ennek érdekében futtassa le a ReCreateCommands.reg állományt.
Az elkészítendő modul a Visual studio.NET IDE Tools menüjében jelenik meg legfelső menüpontként. A menüpont kiválasztásakor megjelenítünk egy dialógus ablakot, melyben megadhatunk egy tetszőleges hosszúságú szöveget, majd a BESZÚRÁS gomb segítségével elhelyezhetjük azt a szerkesztett állományban.
A beépülő modul létrehozását egy önálló projektfajta segíti, mely az Other Projects csoportban található, az Extensibility Projects alcsoportban. Létrehozásához válasszuk a Visual Studio.NET Add-in típust. Egy varázsló segítségével haladhatunk végig a létrehozás folyamatán.
A hatlépéses varázsló negyedik paneljén meg kell adnunk, hogy a modul rendelkezzen felhasználói felülettel, valamint hogy az IDE indulásakor töltődjön be. A varázsló többi ablaka opcionális kérdéseket tesz fel a modullal kapcsolatban. Ezeket átugorhatjuk. A létrehozott projekthez kapcsolódik egy telepítő alkalmazás projektje is, melyre most példánkban nem lesz szükség.
A projekt Connect.cs állománya tartalmazza a szükséges osztály deklarációját, melynek jelentős, és felhasznált metódusait most elemezzük.
A projekt fordításakor a modul assembly-je COM komponensként regisztrálódik.
Az osztály OnConnection metódusában történik meg a menüpont létrehozása, majd elhelyezése a menürendszerben. A legtöbb művelet kódját készen kapjuk, csupán apró kiegészítéseket kell itt eszközölnünk, a modul megjelenésének testre szabása érdekében.
A létrehozás a Commands osztály statikus AddNamedCommand metódusával történik, melynek második paramétere a parancs neve, harmadik paraméterben kell megadnunk a menüponton megjelenő szöveget.
Command command = commands.AddNamedCommand(addInInstance, "VSAddin", "Szöveg beszúrása", "Beszúrja a megadot szöveget az éppen szerkesztett állományba.", true, 59, ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported+(int)vsCommandStatus.vsCommandStatusEnabled);
Majd a parancs bekerül a parancslistába, a következő módon:
CommandBarControl commandBarControl = command.AddControl(commandBar, 1);
A szöveg beszúrásához egy Form jelenik meg a menüpontra kattintáskor. Ennek kódja az InsertForm projektben történik, mely egy Windows-os alkalmazás azzal a különbséggel, hogy a kimenet egy DLL.
A Form1 osztály segítségével jelenítjük meg az ablakot, melynek text tagváltozója fogja tartalmazni bezáráskor a szövegmezőben megadott szöveget.
A modul Exec metódusában példányosítjuk a Form1 osztályt, majd megjelenítjük a Form-ot. A bezárás után meghívunk egy InsertWords metódust, melynek paramétere a megadott szöveg.
A metódusban a szöveg aktuális pozíciójába helyezzük a szöveget, a következő kód segítségével:
if (null != applicationObject.ActiveDocument)
{
((TextSelection)applicationObject.ActiveDocument.Selection).Insert(text,(int)EnvDTE.vsInsertFlags.vsInsertFlagsCollapseToEnd);
}
Az Exec metódus kódja tehát a következő:
if(commandName == "VSAddin.Connect.VSAddin")
{
Form1 f = new Form1();
f.ShowDialog();
if (f.text != "")
{
handled = InsertWords(f.text);
}
else
{
handled = true;
}
return;
}
A commandName paraméter adja meg a deklarált parancs teljes nevét, mellyel azonosíthatjuk az adott menü mögötti funkciót. A parancsunk teljes neve VSAddin.Connect.VSAddin.
A modul kipróbálásához fordítás után zárjuk be a keretrendszert, majd futtassuk le a mellékelt regisztráló állományt. Újra megnyitva a keretrendszert már látható lesz a Tools menüben a „Szöveg beszúrása” feliratú menüpont.