Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB.Net] Referenssit exen sisään

JoonasK [18.04.2010 04:41:11]

#

Kun lisään VB-projektiini referenssejä joudun kopioimaan aina kyseiset .dll-filut samaan kansioon itse .exe:n kanssa. Olisiko näitä .dll-filuja mitenkään mahdollista tunkea ton ohjelman sisälle?

neau33 [18.04.2010 12:38:42]

#

Moikka JoonasK!

Nyt on niin, että .dll (Dynamic Link Library) filut on olemassa juurikin sitä varten, ettei kaikkia rutiineita tarvitse tunkea joka .exe tiedostoon.
Tämmöinen järjestelmä taas aiheuttaa esim. aivan valtavaa tilan säästöä...
Nyt kun on kyse .NET assemblyistä niin riittää kun .dll on näkyvissä GAC (Global Assembly Cache) johon rekisteröidyt .NET assemblyt näkyvät esim. WinXP:ssä \WINDOWS\System32\assembly -hakemistossa elikä jos lisäät viittaukset GAC-välilehdeltä niin ohjelma löytää assemblyn eikä .dll tiedoston tarvitse fyysisesti sijaita samassa hakemistossa .exe tiedoston kanssa. Homma pelittää silloin myös toisessa konessa mikäli siitä löytyy .NET Framework (oikeaa versiota) ja assembly on rekisteröitynä myös tämän toisen masiinan GAC:ssa.

Jos jokin käyttämäsi assembly ei löydy ..\assembly hakemistosta niin kirjaston voi rekisteröidä GAC:een manuaalisesti windowsin komentokehote ikkunassa seuraavasti...

gacgutil /i Polku\TiedostoNimi.dll
ngen install Polku\TiedostoNimi.dll

edellyttäen että ko. assembly on Signed ja sillä on GUID elikä on niinsanotusti StrognNamed.

Sensijaan COM-objektien kohdalla asia on niin, että COM-viittauksen yhteydessä VB.NET luo ko. COM-tyyppikirjastosta Interop Assemblyn ja pukkaa luodun kirjaston automattisesti samaan hakemistoon projektin tuotoksen kanssa.
Jos muutat tämän Interop-tuotoksen fyysistä sijaintia täytyy projektista poistaa vanha viittaus ja luoda uusi viittaus hakemalla ko tiedosto .Net AssemblyBrowserilla + tallentaa & kääntää projekti uudelleen.

Näitä Com-objekteista tuotuja Interop Assembly kirjastoja ei voi rekisteröidä GAC:een (onnistuu guruilta)...

Esim. Täältä löytyy esimerkki oman .NET assemblyn rekisteröintiin...

JoonasK [19.04.2010 12:13:51]

#

Ajattelin lähinnä sitä että ohjelman lähettäminen kavereille on mukavampaa kun samaan kansioon ei tarvitse tunkea niitä dll-filuja. On vielä sen verran harvinaisempia että tuskinpa keneltäkään löytyy valmiina rekisteröitynä näitä.

johncage [25.04.2010 00:29:19]

#

Itse olen käyttänyt mikkisoftan ilmaista Ilmerge-softaa. Sen avulla voi pakata mukaan muitakin assemblyjä.

http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta