Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
kurai
Člen
Avatar
kurai:1.6.2015 19:42

Zdravím, mám jen takový malý dotaz.
Je možné si dát do projektu knihovnu, tak aby i když půjdu k jinému PC vše fungovalo korektně bez nějaký zákroků a já mohl s klidným svědomím jen kliknout na Build ?
Bohužel momentálně nemám příležitost to vyzkoušet a až to budu potřebovat, tak bych rád šel na jistotu nebo naopak vymyslel řešení jinak.
Mám na mysli přidání přes reference.
Našel jsem na internetu pár zmínek o tom, že si VS zapamatuje přímou cestu ke knihovně a na cizím PC ji pak nedokáže najít, co je právě to čemu bych se potřeboval vyvarovat.
Takže, vše funguje tak, jak má i přes reference nebo musím přidat knihovnu do projektu nějak natvrdo ?
Omlouvám se za lajcké vysvětlení ale jedinou zkušenost s externími knihovnami mám s těmi od MS, ale ty jsou na každém PC, kde aplikaci spouštím.

Předem děkuji za každou radu. :)

 
Odpovědět
1.6.2015 19:42
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na kurai
dirtyjobs:2.6.2015 6:24

Pod metodu Main napiš tohle:

static Assembly CurrentDomain_AssemblyResolve(object sender,ResolveEventArgs args)
        {
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("WindowsFormsApplication1.Resources.knihovna.dll"))
            {
                byte[] assemblyData = new byte[stream.Length];
                stream.Read(assemblyData,0,assemblyData.Length);
                return Assembly.Load(assemblyData);
            }
        }

Místo WindowsFormsAp­plication1 napiš své jméno aplikace a v metodě main zavolej tohle:

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

A můžeš knihovnu používat přes reference, aby ti to neházelo chyby a build by měl taky fungovat.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
2.6.2015 6:24
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na dirtyjobs
dirtyjobs:2.6.2015 6:40

A knihovně musíš nastavit vlastnost Build Action na "Embedded Resource".

WindowsFormsAp­plication1.Re­sources.knihov­na.dll
jméno.složka.kni­hovna.dll

 
Nahoru Odpovědět
2.6.2015 6:40
Avatar
kurai
Člen
Avatar
kurai:2.6.2015 7:19

Super, díky. Pomohl si mi. :)

 
Nahoru Odpovědět
2.6.2015 7:19
Avatar
Vítězslav Škrabal:25.10.2019 19:07

Už dlouho pátrám po odpovědi.Jednu knihovnu jsem takto v nořil do projektu podle tohoto návodu ale jak přidat do projektu nebo spustitelného programu více knihoven než jednu vis příloha? já vím toto vlákno je s roku 2015 taky se ptám všude :-@ díky

 
Nahoru Odpovědět
25.10.2019 19:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.