🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
8 messages
8 total messages Started by Mariusz Mon, 21 Dec 2009 19:11
Pluginy
#21283
Author: Mariusz
Date: Mon, 21 Dec 2009 19:11
20 lines
2208 bytes
Witam.

Piszę aplikację Windows Forms w oparciu o pluginy. Wydzieliłem podstawowy 
kod do pliku ...Core.dll. Kod aplikacji do ...Application.Core.dll a kod 
interfejsów związanych z pluginami do ...Application.Plugins.Interfaces.dll. 
Założyłem, że wszystkie pluginy będą znajdowały się w podkatalogu aplikacji 
o nazwie Plugins. Wszystko działa tak jak założyłem, oprócz małego szkopułu. 
Każdy plugin np. korzysta z bibliotek ...Core.dll, ...Application.Core.dll i 
...Application.Plugins.Interfaces.dll, które to muszę umieścić w katalogu 
Plugins. Powoduje to, że dubluje mi się kod, ponieważ te biblioteki również 
znajdują się w głównym katalogu aplikacji. Problem rozwiązało by 
przeniesienie pluginów do głównego katalogu aplikacji, ale nie podoba mi się 
takie rozwiązanie. Czy jest jakiś sposób, aby dzielić wspomniane biblioteki 
pomiędzy aplikacją a pluginami, ale bez umieszczania tych bibliotek w GAC? 
Chodzi o to, aby pluginy z katalogu Plugins mogły korzystać z kodu z 
bibliotek z katalogu głównego aplikacji, bez kopiowania tych bibliotek do 
katalogu Plugins.

--
Pozdrawiam, Mariusz. 
Re: Pluginy
#21284
Author: TM
Date: Tue, 22 Dec 2009 14:17
28 lines
2190 bytes
Mariusz wrote:

> Witam.
>
> Piszę aplikację Windows Forms w oparciu o pluginy. Wydzieliłem podstawowy 
> kod do pliku ...Core.dll. Kod aplikacji do ...Application.Core.dll a kod 
> interfejsów związanych z pluginami do ...Application.Plugins.Interfaces.dll. 
> Założyłem, że wszystkie pluginy będą znajdowały się w podkatalogu aplikacji 
> o nazwie Plugins. Wszystko działa tak jak założyłem, oprócz małego szkopułu. 
> Każdy plugin np. korzysta z bibliotek ...Core.dll, ...Application.Core.dll i 
> ...Application.Plugins.Interfaces.dll, które to muszę umieścić w katalogu 
> Plugins. Powoduje to, że dubluje mi się kod, ponieważ te biblioteki również 
> znajdują się w głównym katalogu aplikacji. Problem rozwiązało by 
> przeniesienie pluginów do głównego katalogu aplikacji, ale nie podoba mi się 
> takie rozwiązanie. Czy jest jakiś sposób, aby dzielić wspomniane biblioteki 
> pomiędzy aplikacją a pluginami, ale bez umieszczania tych bibliotek w GAC? 
> Chodzi o to, aby pluginy z katalogu Plugins mogły korzystać z kodu z 
> bibliotek z katalogu głównego aplikacji, bez kopiowania tych bibliotek do 
> katalogu Plugins.
>

Nie musisz umieszczac tych plikow (*Core.dll) w katalogu plugins. Nawet
powinno sie ich tam nie umieszczach, przynajmniej u mnie tak bylo, ze
dla referencji frameworka, z ktorego korzystaly pluginy oraz moja
aplikacja ustawialem copy output na False, bo inaczej byl blad.

-- 
TM
Re: Pluginy
#21287
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 22 Dec 2009 16:08
15 lines
1502 bytes
On Mon, 21 Dec 2009 20:11:59 +0100, Mariusz wrote:
> Każdy plugin np. korzysta z bibliotek ...Core.dll, ...Application.Core.dll i 
> ...Application.Plugins.Interfaces.dll, które to muszę umieścić w katalogu 
> Plugins. 

Jeżeli dobrze rozumiem, pluginy maja referencje na implementację
z Core i Application.Core? Z jakiego powodu?
Imo, powinny referować tylko Interfaces, a implementacja powinna
zostać ,,podana" przez hosta-pluginów po interfejsach.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
ICQ: 148498663     GG: 2544385      AIM: malyzgora
GTalk: l3vi4than@gmail.com        ASTRA: L3viathan
Re: Pluginy
#21288
Author: Mariusz
Date: Tue, 22 Dec 2009 17:21
34 lines
2753 bytes
Użytkownik "Łukasz 'Maly' Ostrowski" <maly@USUNnemo.pl> napisał w wiadomości 
news:1v9jiop8fux2f$.h0qh7883ji2b$.dlg@40tude.net...
> On Mon, 21 Dec 2009 20:11:59 +0100, Mariusz wrote:
>> Każdy plugin np. korzysta z bibliotek ...Core.dll, 
>> ...Application.Core.dll i
>> ...Application.Plugins.Interfaces.dll, które to muszę umieścić w katalogu
>> Plugins.
>
> Jeżeli dobrze rozumiem, pluginy maja referencje na implementację
> z Core i Application.Core? Z jakiego powodu?
> Imo, powinny referować tylko Interfaces, a implementacja powinna
> zostać ,,podana" przez hosta-pluginów po interfejsach.

Pluginy mają referencję do ...Core.dll oraz do ...Application.Core (na razie 
nie mają, ale będą miały), ponieważ te biblioteki nie są związane z 
aplikacją którą piszę. Są to takie moje uniwersalne biblioteki i pluginy 
mogą z nich korzystać, aby np. dziedziczyć po formularzach zawartych w tych 
bibliotekach, aby ogólnie móc wykorzystać gotowy kod do wspomagania 
tworzenia aplikacji. Mam dodatkową bibliotekę o nazwie np. 
NazwaAplikacji.dll w której jest kod, który podłącza pluginy i w której jest 
inicjowanie głównej formy aplikacji itp. Ogólnie kod w tej bibliotece 
(niewielka część, bo reszta to pluginy) jest pisany pod konkretną aplikację, 
którą to rozszerzam za pomocą pluginów. Kod w ...Core.dll i 
...Application.Core.dll jest niezmienny, to tylko taki mój framework.

> -- 
> Pozdrawiam,
> Łukasz 'Maly' Ostrowski.      http://l3v.pl/
> ICQ: 148498663     GG: 2544385      AIM: malyzgora
> GTalk: l3vi4than@gmail.com        ASTRA: L3viathan

--
Pozdrawiam, Mariusz 
Re: Pluginy
#21285
Author: Mariusz
Date: Tue, 22 Dec 2009 17:31
22 lines
1948 bytes
Użytkownik "TM" <trele.molere@op.pl> napisał w wiadomości 
news:hgqke3$8o7$1@news.onet.pl...
>
> Nie musisz umieszczac tych plikow (*Core.dll) w katalogu plugins. Nawet
> powinno sie ich tam nie umieszczach, przynajmniej u mnie tak bylo, ze
> dla referencji frameworka, z ktorego korzystaly pluginy oraz moja
> aplikacja ustawialem copy output na False, bo inaczej byl blad.

Faktycznie! Nie sprawdziłem tego (lama ze mnie). Usunąłem biblioteki, które 
miałem w katalogu Plugins a pozostawiłem tylko w katalogu głównym aplikacji 
i wywołałem kod w pluginie, odnoszący się do bibliotek z katalogu głównego i 
wszystko jest ok. Wielkie dzięki za odpowiedź. Z drugiej strony, dlaczego to 
zadziałało? Pluginy wyszukały potrzebne biblioteki w swoim katalogu, jak nie 
znalazły to "poszły" szukać do katalogu głównego aplikacji?

>
> -- 
> TM

--
Pozdrawiam, Mariusz 
Re: Pluginy
#21289
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 22 Dec 2009 18:20
16 lines
1569 bytes
On Tue, 22 Dec 2009 18:21:34 +0100, Mariusz wrote:
> <snip>
> Ogólnie kod w tej bibliotece 
> (niewielka część, bo reszta to pluginy) jest pisany pod konkretną aplikację, 
> którą to rozszerzam za pomocą pluginów. Kod w ...Core.dll i 
> ...Application.Core.dll jest niezmienny, to tylko taki mój framework.

To w takim razie wystarczy że te Assembliesy będą w jednym miejscu,
dosięgalne z samej aplikacji-hosta, czyli mogą leżeć obok, nie 
muszą być w plugins. CLR je znajdzie. ;-)

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
ICQ: 148498663     GG: 2544385      AIM: malyzgora
GTalk: l3vi4than@gmail.com        ASTRA: L3viathan
Re: Pluginy
#21290
Author: Mariusz
Date: Tue, 22 Dec 2009 19:25
19 lines
1741 bytes
Użytkownik "Łukasz 'Maly' Ostrowski" <maly@USUNnemo.pl> napisał w wiadomości 
news:lome6ipzecqz.mnfyq6bmvesb.dlg@40tude.net...
> On Tue, 22 Dec 2009 18:21:34 +0100, Mariusz wrote:
>> <snip>
> To w takim razie wystarczy że te Assembliesy będą w jednym miejscu,
> dosięgalne z samej aplikacji-hosta, czyli mogą leżeć obok, nie
> muszą być w plugins. CLR je znajdzie. ;-)

Dzięki.

> -- 
> Pozdrawiam,
> Łukasz 'Maly' Ostrowski.      http://l3v.pl/
> ICQ: 148498663     GG: 2544385      AIM: malyzgora
> GTalk: l3vi4than@gmail.com        ASTRA: L3viathan

--
Pozdrawiam, Mariusz 
Re: Pluginy
#21286
Author: yamma
Date: Wed, 23 Dec 2009 00:00
10 lines
1411 bytes
Mariusz wrote:

> odpowiedź. Z drugiej strony, dlaczego to zadziałało? Pluginy
> wyszukały potrzebne biblioteki w swoim katalogu, jak nie znalazły to
> "poszły" szukać do katalogu głównego aplikacji?

Te pluginy nie działają samoczynnie tylko są ładowane z poziomu głównej 
aplikacji, prawda? A ponieważ aplikacja ładuje te biblioteki przy starcie 
więc niczego nie muszą szukać, bo mają je podane na tacy.
yamma 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads