Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az örökölt COM-összetevők üzembe helyezése hagyományosan nehéz feladat volt. Az összetevőket globálisan regisztrálni kell, és így nemkívánatos mellékhatásokat okozhatnak az átfedésben lévő alkalmazások között. Ez a helyzet általában nem jelent problémát a .NET-keretrendszer alkalmazásaiban, mert az összetevők teljesen el vannak különítve egy alkalmazástól, vagy egymás mellett kompatibilisek. A Visual Studio lehetővé teszi izolált COM-összetevők üzembe helyezését a Windows operációs rendszeren.
A ClickOnce egyszerű és biztonságos mechanizmust biztosít a .NET-alkalmazások üzembe helyezéséhez. Ha azonban az alkalmazások régi COM-összetevőket használnak, további lépéseket kell tennie a telepítésükhöz. Ez a témakör azt ismerteti, hogyan helyezhet üzembe izolált COM-összetevőket, és hogyan hivatkozhat natív összetevőkre (például a Visual Basic 6.0-ról vagy a Visual C++-ról).
Az izolált COM-összetevők telepítésével kapcsolatos további információkért lásd: Alkalmazástelepítés egyszerűsítése a ClickOnce és Registration-Free COM használatával.
Regisztráció nélküli COM
A regisztráció nélküli COM egy új technológia az izolált COM-összetevők üzembe helyezéséhez és aktiválásához. Úgy működik, hogy az összetevő típustárát és regisztrációs adatait, amelyek általában a rendszerregisztrációs adatbázisba vannak telepítve, egy jegyzék nevű XML-fájlba helyezik, amelyet az alkalmazással azonos mappában tárolnak.
A COM-összetevők elkülönítéséhez regisztrálni kell a fejlesztő gépén, de nem kell regisztrálni a végfelhasználó számítógépén. A COM-összetevők elkülönítéséhez mindössze annyit kell tennie, hogy a hivatkozás izolált tulajdonságát Igaz értékre állítja. Alapértelmezés szerint ez a tulajdonság False (Hamis) értékre van állítva, ami azt jelzi, hogy regisztrált COM-hivatkozásként kell kezelni. Ha ez a tulajdonság Igaz, akkor a létrehozáskor a rendszer létrehoz egy jegyzékfájlt ehhez az összetevőhöz. Emellett a megfelelő fájlok az alkalmazásmappába másolódnak a telepítés során.
Amikor a jegyzékgenerátor izolált COM-referenciával találkozik, számba fogja venni az CoClass összetevő típustárában lévő összes bejegyzést, megfelelteti az egyes bejegyzéseket a megfelelő regisztrációs adatokkal, és jegyzékdefiníciókat hoz létre a típustárfájl összes COM-osztályához.
Regisztráció nélküli COM-összetevők üzembe helyezése a ClickOnce használatával
A ClickOnce üzembe helyezési technológiája kiválóan alkalmas izolált COM-összetevők üzembe helyezésére, mivel a ClickOnce és a regisztráció nélküli COM egyaránt megköveteli, hogy az összetevők rendelkezzenek jegyzékfájlokkal az üzembe helyezéshez.
Az összetevő szerzőjének általában meg kell adnia egy jegyzékfájlt. Ha azonban nem, a Visual Studio képes automatikusan létrehozni egy jegyzékfájlt egy COM-összetevőhöz. A jegyzéklétrehozás a ClickOnce Publish folyamat során történik; További információ: ClickOnce-alkalmazások közzététele. Ez a funkció lehetővé teszi a korábbi fejlesztési környezetekben, például a Visual Basic 6.0-ban létrehozott régi összetevők használatát is.
A ClickOnce kétféleképpen helyezi üzembe a COM-összetevőket:
Használja a bootstrappert a COM-összetevők üzembe helyezéséhez; ez minden támogatott platformon működik.
Használjon natív összetevőelkülönítést (más néven regisztráció nélküli COM-telepítést).
Példa egy egyszerű COM-összetevő elkülönítésére és üzembe helyezésére
A regisztráció nélküli COM-összetevők üzembe helyezésének bemutatásához ez a példa létrehoz egy Windows-alapú alkalmazást a Visual Basicben, amely a Visual Basic 6.0 használatával létrehozott, izolált, natív COM-összetevőre hivatkozik, és a ClickOnce használatával telepíti azt.
Először létre kell hoznia a natív COM-összetevőt:
Natív COM-összetevő létrehozása
A Visual Basic 6.0 használatával a Fájl menüben kattintson az Új, majd a Project gombra.
Az Új projekt párbeszédpanelen válassza ki a Visual Basic csomópontot, és válasszon egy ActiveX DLL-projektet . A Név mezőbe írja be a következőt
VB6Hello:Megjegyzés:
Csak az ActiveX DLL és az ActiveX Control projekttípusokat támogatja a regisztráció nélküli COM; Az ActiveX EXE és az ActiveX-dokumentum projekttípusai nem támogatottak.
A Megoldáskezelőben kattintson duplán a Class1.vb a szövegszerkesztő megnyitásához.
A Class1.vb-ben adja hozzá a következő kódot a
Newmetódushoz generált kód után:Public Sub SayHello() MsgBox "Message from the VB6Hello COM component" End SubÉpítse meg a komponenst. A Build menüben kattintson a Megoldás létrehozása elemre.
Megjegyzés:
A regisztráció nélküli COM csak a DLL-eket támogatja, és a COM vezérli a projekttípusokat. Az EXE-eket nem használhatja regisztrációmentes COM-val.
Most létrehozhat egy Windows-alapú alkalmazást, és hozzáadhat hozzá egy hivatkozást a COM-összetevőhöz.
Windows-alapú alkalmazás létrehozása COM-összetevővel
A Visual Basic használatával a Fájl menüben kattintson az Új, majd a Project elemre.
Az Új projekt párbeszédpanelen válassza a Visual Basic csomópontot, majd a Windows-alkalmazást. A Név mezőbe írja be a következőt
RegFreeComDemo:A Megoldáskezelőben kattintson az Összes fájl megjelenítése gombra a projekthivatkozások megjelenítéséhez.
Kattintson a jobb gombbal a Hivatkozások csomópontra , és válassza a Helyi menü Hivatkozás hozzáadása parancsát.
A Hivatkozás hozzáadása párbeszédpanelen kattintson a Tallózás fülre , keresse meg a VB6Hello.dll, majd jelölje ki.
Megjelenik egy VB6Hello-hivatkozás a hivatkozások listájában.
Mutasson az eszközkészletre, jelöljön ki egy gombvezérlőt , és húzza az Űrlap1 űrlapra.
A Tulajdonságok ablakban állítsa a gomb Szöveg tulajdonságát Hello értékre.
Kattintson duplán a gombra a kezelőkód hozzáadásához, majd a kódfájlban írja be a kódot, hogy a kezelő a következőképpen nézzen ki:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim VbObj As New VB6Hello.Class1 VbObj.SayHello() End SubIndítsa el az alkalmazást. A Hibakeresés menüben kattintson a Hibakeresés indítása elemre.
Ezután el kell különítenie a vezérlőt. Az alkalmazás által használt ÖSSZES COM-összetevő COM-referenciaként jelenik meg a projektben. Ezek a hivatkozások a Megoldáskezelő ablak Hivatkozás csomópontja alatt láthatók. (Figyelje meg, hogy közvetlenül a Project menü Hivatkozás hozzáadása parancsával vagy közvetve is hozzáadhat hivatkozásokat, ha egy ActiveX-vezérlőt húz az űrlapra.)
Az alábbi lépések bemutatják, hogyan lehet elkülöníteni a COM-összetevőt, és közzétenni az izolált vezérlőt tartalmazó frissített alkalmazást:
COM-összetevő elkülönítése
A MegoldáskezelőHivatkozás csomópontjában válassza ki a VB6Hello referenciát.
A Tulajdonságok ablakban módosítsa az Izolált tulajdonság értékét HamisrólIgaz értékre.
A Build menüben kattintson a Megoldás létrehozása elemre.
Az F5 billentyű lenyomásakor az alkalmazás a várt módon működik, de most már regisztráció nélküli COM alatt fut. Ennek bizonyításához próbálja meg megszüntetni a VB6Hello.dll összetevő regisztrációját, és futtassa a RegFreeComDemo1.exe a Visual Studio IDE-n kívül. Ezúttal, amikor a gombra kattint, továbbra is működik. Ha ideiglenesen átnevezi az alkalmazásjegyzéket, az ismét sikertelen lesz.
Megjegyzés:
A COM-összetevők hiányát szimulálhatja a regisztráció ideiglenes megszüntetésével. Nyisson meg egy parancssort, lépjen a rendszermappába a következő begépelésével cd /d %windir%\system32, majd regsvr32 /u VB6Hello.dll begépelésével vonja vissza az összetevő regisztrációját. Újra regisztrálhatja, ha beírja regsvr32 VB6Hello.dll.
Az utolsó lépés az alkalmazás közzététele a ClickOnce használatával:
Alkalmazásfrissítés közzététele izolált COM-összetevővel
A Build menüben kattintson a RegFreeComDemo közzététele elemre.
Megjelenik a Közzététel varázsló.
A Közzététel varázslóban adjon meg egy helyet a helyi számítógép lemezén, ahol elérheti és megvizsgálhatja a közzétett fájlokat.
Kattintson a Befejezés gombra az alkalmazás közzétételéhez.
Ha megvizsgálja a közzétett fájlokat, vegye figyelembe, hogy a sysmon.ocx fájl is szerepel benne. A vezérlő teljesen el van különítve ehhez az alkalmazáshoz, ami azt jelenti, hogy ha a végfelhasználó gépe egy másik, a vezérlő egy másik verzióját használó alkalmazással rendelkezik, az nem zavarhatja ezt az alkalmazást.
Hivatkozzon natív összetevőkre
A Visual Studio támogatja a natív Visual Basic 6.0-s vagy C++-szerelvényekre mutató hivatkozásokat; ezeket a hivatkozásokat natív hivatkozásoknak nevezzük. Annak ellenőrzéséhez, hogy egy hivatkozás natív-e, ellenőrizze, hogy a fájltípustulajdonsága natív vagy ActiveX értékű-e.
Natív hivatkozás hozzáadásához használja a Hivatkozás hozzáadása parancsot, majd keresse meg a jegyzékfájlt. Egyes összetevők a jegyzékfájlt a DLL-ben helyezik el. Ebben az esetben egyszerűen kiválaszthatja magát a DLL-t, és a Visual Studio natív hivatkozásként adja hozzá, ha azt észleli, hogy az összetevő beágyazott jegyzékfájlt tartalmaz. A Visual Studio automatikusan belefoglalja a jegyzékben szereplő függő fájlokat vagy szerelvényeket is, ha ugyanabban a mappában vannak, mint a hivatkozott összetevő.
A COM-vezérlés elkülönítése megkönnyíti az olyan COM-összetevők üzembe helyezését, amelyek még nem rendelkeznek jegyzékekkel. Ha azonban egy összetevőhöz jegyzékfájl tartozik, közvetlenül hivatkozhat a jegyzékre. Valójában mindig az összetevő szerzője által megadott jegyzékfájlt kell használnia, ahol csak lehetséges, az Izolált tulajdonság használata helyett.
A regisztráció nélküli COM-összetevők üzembe helyezésének korlátozásai
A regisztráció nélküli COM egyértelmű előnyöket biztosít a hagyományos üzembe helyezési technikákkal szemben.
Nem minden összetevő alkalmas a regisztráció nélküli COM-ra. Az összetevők nem megfelelőek, ha az alábbiak bármelyike igaz:
Az összetevő egy folyamaton kívüli kiszolgáló. Az EXE-kiszolgálók nem támogatottak; csak a DLL-ek támogatottak.
Az összetevő az operációs rendszer része, vagy rendszerösszetevő, például XML, böngészőösszetevő vagy Microsoft Data Access-összetevők (MDAC). Kövesse az összetevő szerzőjének újraterjesztési szabályzatát; kérdezze meg a szállítót.
Az összetevő egy alkalmazás, például a Microsoft Office része. Például ne próbálja meg elkülöníteni a Microsoft Excel-objektummodellt. Ez az Office része, és csak olyan számítógépen használható, amelyen telepítve van a teljes Office-termék.
Az összetevő bővítményként vagy beépülő modulként használható, például Office-bővítményként vagy webböngészőben lévő vezérlőelemként. Az ilyen összetevők általában valamilyen regisztrációs sémát igényelnek, amelyet az üzemeltetési környezet határoz meg, amely túlmutat a jegyzék hatókörén.
Az összetevő egy fizikai vagy virtuális eszközt kezel a rendszer számára, például egy nyomtatósor-kezelő eszközillesztőjét.
Az összetevő egy újraterjeszthető Adathozzáférés. Az adatalkalmazások futtatásához általában külön, újraterjeszthető adathozzáférés szükséges. Ne próbálja meg elkülöníteni az olyan összetevőket, mint a Microsoft ADO Data Control, a Microsoft OLE DB vagy a Microsoft Data Access Components (MDAC). Ehelyett, ha az alkalmazás MDAC-t vagy SQL Server Expresst használ, előfeltételként kell beállítania őket; lásd : Előfeltételek telepítése ClickOnce-alkalmazással.
Bizonyos esetekben előfordulhat, hogy az összetevő fejlesztője újratervezi a regisztráció nélküli COM-hoz. Ha ez nem lehetséges, a Bootstrapper használatával továbbra is létrehozhat és közzétehet azoktól függő alkalmazásokat a standard regisztrációs sémán keresztül. További információ: Bootstrapper-csomagok létrehozása.
A COM-összetevők alkalmazásonként csak egyszer különíthetők el. Nem különítheti el például ugyanazt a COM-összetevőt két különböző osztálytár-projekttől , amelyek ugyanahhoz az alkalmazáshoz tartoznak. Ha így tesz, az buildre vonatkozó figyelmeztetést fog eredményezni, és az alkalmazás futásidőben nem fog betöltődni. A probléma elkerülése érdekében a Microsoft azt javasolja, hogy a COM-összetevőket egyetlen osztálytárba foglalja.
Több olyan eset is van, amikor com-regisztrációra van szükség a fejlesztő gépén, annak ellenére, hogy az alkalmazás üzembe helyezése nem igényel regisztrációt. A
Isolatedtulajdonsághoz regisztrálni kell a COM-összetevőt a fejlesztő gépén, hogy a jegyzék automatikusan létrejöjjön a build során. Nincsenek olyan regisztráció-rögzítési képességek, amelyek meghívják az önregisztrációt a buildelés során. A típustárban nem explicit módon definiált osztályok sem jelennek meg a jegyzékben. Ha com-összetevőt használ egy már meglévő jegyzékfájllal, például natív referenciával, előfordulhat, hogy az összetevőt nem kell regisztrálni a fejlesztéskor. Regisztrációra azonban akkor van szükség, ha az összetevő Egy ActiveX-vezérlő, és fel szeretné venni az eszközkészletbe és a Windows Forms tervezőbe.