Diskuze: C# - Přidání knihoven do projektu

C# .NET .NET (C# a Visual Basic) C# - Přidání knihoven do projektu American English version English version

Avatar
kurai
Člen
Avatar
kurai:

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:

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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět 2.6.2015 6:24
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na dirtyjobs
dirtyjobs:

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:

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

 
Nahoru Odpovědět 2.6.2015 7:19
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 4 zpráv z 4.