Cum să rezolvați corect referințele în comenzile personalizate

Am construit o bibliotecă de clasă care exportă două comenzi personalizate folosind c #. Această bibliotecă de clase depinde de unele referințe, care sunt copiate corespunzător în directorul bin \ Debug pe build (a unei soluții utilizând comenzile personalizate), atâta timp cât adaug doar DLL-urile de control ca referință. Până acum, bine.

Dacă acum adaug comenzile de la acel director de ieșire în caseta de instrumente și o așez într-o formă goală în proiectant, studioul vizual se blochează. Dacă am depanare de la soluția de control personalizat, cum ar fi http://msdn.microsoft.com /en-us/library/5ytx0z24(VS.80).aspx , pot vedea excepția IO că unul dintre DLL-urile referențiate nu poate fi găsit.

Deci, există o modalitate rezonabilă de a plasa dependențele pentru designerul pentru a le găsi? Am încercat să văd cu căile de referință în setările proiectului, dar fără nici un folos. Aș prefera să evit să stabilesc trasee la nivel de sistem și să instalez/înregistrez controlul de fiecare dată când schimba un pic de cod.

0
Una dintre DLL-urile care fac referire la controlul particularizat nu poate fi găsită. aceste DLL-uri nu apar explicit în lista de referințe, dar sunt copiate în directorul bin pe build, deoarece studioul vizual detectează aceste dependențe. Chiar adăugarea tuturor la referințele de proiect nu îi ajută pe designer să le găsească.
adăugat autor Keiichi, sursa
Ce vrei sa spui? Care pagina? BTW, dacă adaug programul de control, funcționează bine atunci când rulează aplicația mea.
adăugat autor Keiichi, sursa
1) Nu, 2) Am facut-o, motiv pentru care intrebarea AND comment # 2 state "care sunt corect copiate ..." 3) Am incercat referinte explicite, care nu ajuta 4) nimic nu este semnat si pot adauga doar "FileNotFoundException A fost imposibil de încărcat fișierul sau asamblarea (una din ansamblurile mele - a se vedea întrebarea) sau una dintre dependențele lui. Sistemul nu poate găsi fișierul specificat. Speram să fi spus destul de clar ...
adăugat autor Keiichi, sursa
puteți să-mi spuneți ce DLL nu poate fi găsit? dll-ul pe care l-ați adăugat explicit?
adăugat autor sihirbazzz, sursa
după ce ați adăugat la referințe, ați apelat explicit pe pagină?
adăugat autor sihirbazzz, sursa
dacă nu înțeleg greșit când adăugați controlul/trimiterile personalizate într-un alt spațiu de nume, nu funcționează, nu? el are puține motive..1-) utilizați ambele obfuscation la debug și opțiunea de optimizare a codului împreună 2) nu ați setat dll referință la opțiunea copyLocale 3-) nu ați apelat DLL dvs. din lista de referințe și/sau în forma în care doriți să utilizați controlul dvs., în mod explicit 4-) una sau mai multe părți din dll sau proiectul principal nu sunt semnat, iar celălalt semnat .. a verifica aceste și lasă-mă cunoștință vă rog .. BTW dacă nu scrie codul dvs. de eroare sa
adăugat autor sihirbazzz, sursa
atât de multe semnale de dezvoltare 3rd party sau semn de întârziere stabilit de codurile lor .. dacă nu ați semnat codul dvs. și DLL pe care încercați să utilizați este semnat veți primi această eroare .. eveniment de semnare întârziere nu permite să depanare de asamblare/dll .. ai spus asta dezvoltatorului acestui dll? si atat de putin procentuale .. Ati sunat ca referinta pe care l-ati copiat in app.path? sau ați copiat și ați sunat la o altă copie? (adică în cazul în care fișierul pe care l-ați descărcat mai întâi pentru DLL dvs.) și .. dacă îl adăugați programatically apoi mergeți în aces
adăugat autor sihirbazzz, sursa
Dacă "Căile de referință" nu funcționează după cum spuneți, atunci puteți încerca să încărcați manual dll-urile (System.Reflection.Assembly.LoadFile) în interiorul constructorului comenzii personalizate (efectuând doar încărcarea manuală dacă este setat acest.DesignMode ). Am tendința de a evita designerul din multe motive similare, așa că nu sunt sigur dacă va funcționa, dar merită o lovitură!
adăugat autor Thracx, sursa

1 răspunsuri

De ce nu faceți referire doar la proiect ca un întreg, mai degrabă decât copierea manuală în DLL? Dacă aveți un motiv întemeiat pentru aceasta, atunci amendă, dar se pare că ați întrebat o întrebare care nu trebuie să fie întrebată! : P

0
adăugat
Încercați bine, dar această întrebare trebuie într-adevăr să fie întrebuințată deoarece includerea proiectului în soluție și apoi menționarea acestuia nu ajută. Dll-ul care nu este găsit este, după cum sa menționat mai sus, o referință a proiectului referit. Și nu, adăugând referința lipsă în mod explicit la proiect folosind componenta personalizată nu ajută. Dll-ul nu este încă găsit și excepția IO este aruncată.
adăugat autor Keiichi, sursa
Repet, vorbim despre referințe imbricate. Referindu-se la un proiect sau un DLL funcționează bine, dar lucrurile la care se referă proiectul menționat nu se găsesc.
adăugat autor Keiichi, sursa
OK, deci spui că adăugarea unei trimiteri la proiectul de ieșire mai degrabă decât DLL-urile nu funcționează? Este foarte ciudat ... Eveniment mai ciudat decat sa nu gasesti DLL-ul! Există vreo șansă să puteți pune un proiect online, care are aceeași problemă? Putem să vă putem ajuta mai mult dacă ne oferiți un exemplu (nu) de lucru!
adăugat autor Faraday, sursa
@Keiichi - Permiteți-mi să confirm. Recomandările ProjectA ProjectB, ProjectB are o referință la un DLL, dar atunci când invocați o metodă (sau similară) în ProjectB de la ProjectA, care necesită DLL, nu reușește? Dacă este cazul (ați spus deja că ați setat corect CopyLocal), atunci de ce nu puteți crea un exemplu de proiect care este configurat la fel (proiectul A -> Project B -> DLL) și permiteți-ne să îl vedem te ajut? Ar fi nevoie de două minute dacă avem de a lucra cu ceva! De asemenea, nu este nevoie de rudeness doar pentru că a trebuit să rephrase ceva pentru că nu a fost clar, eu doar
adăugat autor Faraday, sursa