Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Problemi riferimenti DLL
venerdì 27 novembre 2009 - 19.58
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
sg
Profilo
| Newbie
26
messaggi | Data Invio:
ven 27 nov 2009 - 19:58
Salve,
vorrei dei chiarimenti sulla gestione dei riferimenti aggiunti in un progetto.
In pratica ho creato una DLL (Class Library) che contiene una classe da utilizzare in diversi progetti.
In ogni progetto ho aggiunto il suo riferimento in una cartella dove risiede solo il compilato cioè la DLL.
Ho creato una cartella dove risiedono solo i campilati dei progetti i .EXE ma quando lancio un programma mi dà una eccezione perchè non trova la DLL mentre se sposto quest'ultima nella cartella dove stanno tutti i compilati dei progetti essi partono normalmente.
Non capisco perchè non considera il percorso del riferimento aggiunto nel progetto ma cerca la DLL nella stessa cartella dove risiede il compilato.
Ho notato anche che quando crea un compilato in DEBUG o in generazione normale si riporta nella cartella bin (sottocartelle release o debug) anche i compilati dei riferimenti (gli imports) del progetto. Perchè?
luigidibiasi
Profilo
| Guru
1.077
messaggi | Data Invio:
sab 28 nov 2009 - 09:38
>Ho creato una cartella dove risiedono solo i campilati dei progetti
>i .EXE ma quando lancio un programma mi dà una eccezione perchè
>non trova la DLL mentre se sposto quest'ultima nella cartella
>dove stanno tutti i compilati dei progetti essi partono normalmente.
Perchè le DLL vengono ricercate nella path del programma (.exe) oppure nelle path di sistema (C:\windows\system32 etc.. se le sposti nelle path di sistema non ti dà eccezzione)
Non le và a cercare in altre cartelle perchè altrimenti su ogni pc dove installi il programma dovresti ricreare la stessa struttura del pc di sviluppo ... (pensa a cosa accadrebbe se le dll le tieni compilate in c:\programmi\mieiprogetti\progetto1\bin\release\miadll.dll .. su ogni pc dovresti ricreare c:\programmi\mieiprogetti\...bin\release\)
>Non capisco perchè non considera il percorso del riferimento
>aggiunto nel progetto ma cerca la DLL nella stessa cartella dove
>risiede il compilato.
Perchè quel percorso viene usato esclusivamente per risolvere i riferimenti e poter compilare il programma.
>Ho notato anche che quando crea un compilato in DEBUG o in generazione
>normale si riporta nella cartella bin (sottocartelle release
>o debug) anche i compilati dei riferimenti (gli imports) del
>progetto. Perchè?
Stesso motivo di prima... visual studio fà in automatico il lavoro di copia e incolla.. prende le DLL dai percorsi che hai specificato e se le porta nelle cartelle bin\release o debug x poter avviare il programma ed eseguirne il debug...
>
>
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/
http://www.dibiasi.it/
sg
Profilo
| Newbie
26
messaggi | Data Invio:
sab 28 nov 2009 - 13:42
Salve,
così dovrei creare un'unica cartella con tutti i compilati e mettere dentro anche le DLL tranne che decido per quest'ultime di metterle in system32.
Non c'è quindi la possibilità di creare una cartella con gli oggetti in comune per l'applicazione con un path di riferimento in aggiunta a quella di sistema tanto per avere qualcosa meglio organizzata anche se a livello funzionale va bene tutto in un'unica cartella-
luigidibiasi
Profilo
| Guru
1.077
messaggi | Data Invio:
sab 28 nov 2009 - 14:24
credo esistano 3 strade..
1) caricare manualmente le DLL dalla path che desideri senza usare aggiungi riferimenti
2) modificare le impostazioni di compilazione (xò non so dirti da dove cominciare )
3) mettere le dll dove vuoi ed andare a modificare le variabili di sistema
aspettiamo qualche risposta da qualcuno che ha già affrontato il problema
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/
http://www.dibiasi.it/
Teech
Profilo
| Expert
573
messaggi | Data Invio:
sab 28 nov 2009 - 17:30
Premetto che non sono ceto un esperto di questo tipo di problematiche...
Ci sono 2 strade da seguire: se la DLL è relativa al singolo programma deve risiedere dove è presente il programma, mentre se è comune a più programmi puoi installarla nella GAC (Global Assembly Cache).
Qui trovi un articolo che spiega come fare...
http://www.visual-basic.it/articoli/fbGAC.htm
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
Torna su
Stanze Forum
Elenco Threads
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 !