[C#]Dll e COM object

martedì 11 luglio 2006 - 12.16

kiara83 Profilo | Junior Member

Volevo qualche dritta su dll e com object, esiste un qualche sito che spieghi bene cosa sono, come si creano e come vengono usate??
Io ho una mia applicazione MyProject06 formata da un form.cs e da altre classi.
Ora dovrei creare una dll per poter usare il mio progetto in un'altra applicazione senza dover riscrivere tutto il codice, ma non so proprio come muovermi.
Se qualcuno mi sa dare qualche dritta gli sarei veramente grata!!!!

Cteniza Profilo | Guru

Se l'altro progetto dove vuoi riutilizzare le tue classi è anch'esso su .net non devi far altro che generare un progetto dll a partire dalle classi da esportare e poi inserirne il riferimento sul nuovo progetto (più facile a farsi che a dirsi).

kiara83 Profilo | Junior Member

>Se l'altro progetto dove vuoi riutilizzare le tue classi è anch'esso
>su .net non devi far altro che generare un progetto dll a partire
>dalle classi da esportare e poi inserirne il riferimento sul
>nuovo progetto (più facile a farsi che a dirsi).
>

Devo prendere il mio progetto e compilarlo come DLL giusto?
Così nel mio nuovo progetto aggiungo nei riferimenti il file .DLL appena creato e lo richiamo all'interno del mio nuovo progetto.

Andy Profilo | Senior Member

Proprio così...apri un nuovo progetto come libreria di classi, lo compili (ovviamente al posto dell'eseguibile genera la Dll), e poi nel tuo progetto dove ti serve la libreria la includi nelle referenze..
Ricordati che dove ci sarà il tuo eseguibile dovrà esserci anche la libreria associata..

Ciao.
Andy

kiara83 Profilo | Junior Member

>Proprio così...apri un nuovo progetto come libreria di classi,
>lo compili (ovviamente al posto dell'eseguibile genera la Dll),
>e poi nel tuo progetto dove ti serve la libreria la includi nelle
>referenze..
>Ricordati che dove ci sarà il tuo eseguibile dovrà esserci anche
>la libreria associata..
>
>Ciao.
>Andy

Scusa, ma ho un po' di confusione:
qui c'è qualcosa su come generare la dll: http://msdn.microsoft.com/library/ita/default.asp?url=/library/ITA/csref/html/vcwlkLibrariesTutorial.asp ma non mi è chiarissimo.
Poi non ho capito bene quello che mi hai scritto.
Perchè devo aprire un nuovo progetto come libreria di classi? non devo generare la dll dal mio progetto?
Dove lo devo scrivere il comando per generare? Nel prompt dei comandi?

Cteniza Profilo | Guru

Mettiamo che nel tuo progetto 1 abbia degli elementi che vuoi condividere con altri progetti, tu prendi, aggiungi un nuovo progetto alla soluzione di tipo libreria, importi su questo nuovo progetto quello che vuoi condividere che compilerai a parte.
Il riferimento a questa libreria lo dovrai inserire tra i riferimenti dei progetti dove vuoi utilizzare quello che hai condiviso.

Andy Profilo | Senior Member

Allora, per non complicarti la vita:

1) Crea un nuovo progetto a parte, (anche nella stessa soluzione)come output setti liberia di classi;
2) Nel nuovo progetto metti il codice che verrà incluso nella libreria(ovviamente quello che vuoi che si veda all'esterno della libreria lo dovrai dichiarare come Public);
3) Nessun comando particolare va usato, semplicemente quando generi la soluzione(esattamente come fai per i progetti dove generai un eseguibile ossia da Menu Genera->Genera soluzione), nella cartella Bin ti crea la DLL;
3) La Dll creata infine la utilizzi nel tuo progetto aggiungendola come riferimento.

Se tutto è corretto instanziando la tua Dll nnel tuo progetto dovrebbe farti utilizzare tutto quello che tu hai dichiarato public nella creazione della DLL.


Andy

kiara83 Profilo | Junior Member

>Mettiamo che nel tuo progetto 1 abbia degli elementi che vuoi
>condividere con altri progetti, tu prendi, aggiungi un nuovo
>progetto alla soluzione di tipo libreria, importi su questo nuovo
>progetto quello che vuoi condividere che compilerai a parte.
>Il riferimento a questa libreria lo dovrai inserire tra i riferimenti
>dei progetti dove vuoi utilizzare quello che hai condiviso.
>

C'è da qualche parte una guida su come fare a importare i metodi che voglio poter condividere, perchè non so come fare. Mi hanno detto che c'è pieno di siti, ma io non riesco a trovarli.
Cos'è il GUID e mi può servire?

Cteniza Profilo | Guru

Non credo che esista un manuale che descriva le operazioni necessarie a trasformare / generare una libreria se non il normale manuale.
Personalmente mi è capitato di andare in un progetto winexe e cambiare il tipo di output in dll.
Per una trasformazione "normale" segui i passi:
- crea un nuovo progetto libreria
- aggiungi i sorgenti delle classi
- compila
Ovviamente devi impostare l'area di visibilità di classi e metodi in modo tale che ci si possa accedere.
Tutte cose che trovi in un normale manuale come quello di Balena su vb2005.


kiara83 Profilo | Junior Member

Se io voglio importare tutti i metodi delle mie classi tranne quelli del form.cs devo riscrivere tutto?

kiara83 Profilo | Junior Member

Devo usare le funzioni Dllregister e DllUnregister.
Cosa servono?

Andy Profilo | Senior Member

>Se io voglio importare tutti i metodi delle mie classi tranne
>quelli del form.cs devo riscrivere tutto?

esatto metti nel progetto liberia tutti i metodi che vuoi vedere poi nella DLL dichiarandoli come public.
Andy

Andy Profilo | Senior Member

>Devo usare le funzioni Dllregister e DllUnregister.
>Cosa servono?
>
Scusa perchè dovresti utilizzarli? Una volta che il tuo eseguibile ha referenziato nel progetto la DLL non devi più fare nulla.
Andy

kiara83 Profilo | Junior Member

Basta che incollo tutto il codice che voglio importare nella class library?

kiara83 Profilo | Junior Member

Ma queste funzioni le dovrei usare nella class library. Non mi chiedere perchè, visto che mi è stato solo detto di usarle nella class library.
Cosa servono?

Andy Profilo | Senior Member

>Basta che incollo tutto il codice che voglio importare nella
>class library?
Esatto. lasciando private quello che ti serve solo all'interno della classe e public quelli che poi saranno i metodi della tua classe visibili all'esterno della DLL.

Non ti serve altro, fidati.

Compili il progetto della DLL e la includi nelle refences del progetto in cui vuoi utilizzare la tua Dll, nient'altro.
Andy

kiara83 Profilo | Junior Member

Mi hanno detto di dare un occhio a questi due metodi che dovrei mettere nella mia class library
http://www.codeproject.com/cs/miscctrl/exposingdotnetcontrols.asp
ma non ci capisco molto. Cosa servono??

Andy Profilo | Senior Member

Beh come dice il titolo dell'articolo lì si ti dimostra come creare un ActiveX da una form..ma non credo c'entri nulla con quello che vuoi fare tu...
Qui stiamo parlando di Winform e creazione di una DLL, quella dell'articolo è un'altro argomento..
Andy

kiara83 Profilo | Junior Member

>Beh come dice il titolo dell'articolo lì si ti dimostra come
>creare un ActiveX da una form..ma non credo c'entri nulla con
>quello che vuoi fare tu...
>Qui stiamo parlando di Winform e creazione di una DLL, quella
>dell'articolo è un'altro argomento..
>Andy

Cos'è un ActiveX e il COM Interop?

Andy Profilo | Senior Member

I controlli ActiveX sono componenti software riutilizzabili che incorporano la tecnologia ActiveX, allo scopo di ottenere pagine web interattive e multimediali difficilmente realizzabili con i vecchi script.. Questi componenti consentono di aggiungere funzionalità speciali, quali animazioni o menu a comparsa, alle pagine Web, ai programmi e agli strumenti di sviluppo del software.


Andy

kiara83 Profilo | Junior Member

Devo creare un COM object che sia accessibile dall'esterno e un'interfaccia in cui riporto i metodi che voglio siano visibili all'esterno, solo che non mi è molto chiaro come devo fare.
Quelle due funzioni che ho postato poco sopra servono per registrare il mio componente.
Visto che ho una confusione pazzesca, e non so manco da dove cominciare a chiedere vi pregherei, se qualcuno sa di un sito (possibilmente in italiano, se no è uguale) dove potrebbe essere spiegato bene questa cosa del COM object.
Grazie tante
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5