Kako dobiš pot do mape, kjer je kodada websita (razvojna faza)?
Lp,
Matjaž
Avtor: o-MA-n-tjaz, objavljeno na portalu SloDug.si (Arhiv)
Kako dobiš pot do mape, kjer je kodada websita (razvojna faza)?
Lp,
Matjaž
o-MA-n-tjaz - petek, 09. marec 2007
Čeprav sem imel probleme z obrazložitvijo problema smo prišli do rešitve.pril hvala za pomoč točno to sem potreboval. Lp,Matjaž
pril - petek, 09. marec 2007
aja, če ne veš kateri studio probaj z:mydte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");vsaj v vb-ju to dela :-)lp, pl
pril - petek, 09. marec 2007
uh, uh...kateri visual studio uporabljaš? (v c#, čeprav bo to na pamet, ker delam drugače v vb-ju, ampak isto s..., drugo pakovanje :-))Torej referenca na trenutni visual studio v zagonu je:EnvDTE.DTE mydte;mydte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.8.0");lp, pl
o-MA-n-tjaz - petek, 09. marec 2007
Najbrš je to prava stvar samo jaz tega v C# ne znam usposobit. Če sem prav ugotovil je v C# namesto DTE razred DTEClass. Vendar mi ob kreaciji objekta torej na:DTEClass dte = new DTEClass();vrne sledečo napako:Retrieving the COM class factory for component with CLSID {3C9CFE1E-389F-4118-9FAD-365385190329} failed due to the following error: 80040154. katero pa niti prebližno ne vem kako bi se jo dalo rešiti. Lep dan še naprejMatjaž
pril - četrtek, 08. marec 2007
Hmmm, potem mislim da rabiš podatek od dokumenta v katerem delaš v Visual studio okolju? Potem ni to stvar niti izvajalnih datotek, niti windows forms ampak Visual studia. V tem primeru uporabiš visual studio objekte. Uporabiš dte objekt (design time environment) Za tvoj primer bi bilo to:DTE.ActiveDocument.Pathlp, pl
o-MA-n-tjaz - četrtek, 08. marec 2007
Bom poskusil še enkrat bolj jasno razložiti problem. Imam asp.net kontrolo, ki ima browsable property, ki "odpre" v design timu editor formo (windows form). Na tej fromi bi pa rad prikazal strukturo map in datotek (css), ki jih imam kjerkoli v projektu (kot projekt pa mislim vse daoteke znotraj website - prikažem samo css). Property na kontroli bo po izbiri css-ja na editor formi hranil vrednost (string) enako ~/podmapa1/.../podmapan/*.css. Torej rabim path do mape kjer imam kompletno website kodo samo zato, da jo lahko prikažem vse mape in vse css datoteke znotraj projekta na editor (windows) fomi.Upam da bo sedaj bolj razumljivo. Lp,Matjaž
AndrejT - četrtek, 08. marec 2007
Lahko še malo pojasniš situacijo? Praviš, da delaš v namizni aplikaciji (Windows Forms), želiš pa dostop do datoteke css, ki je v razvojnem imeniku tvoje spletne aplikacije? Kako sta tadva projekta sploh povezana? V istem solutionu? Dodatno vprašanje: kot vidim, gre za VS2003?
pril - četrtek, 08. marec 2007
Informacijo kje so source datoteke za ustrezen dll (exe) so v VS projektu, ta pa je v direktoriju, ki ti ga je vrnil reflection objekt. Same datoteke z izvorno kodo so za samo izvajanje nepomembne (to so zgolj tekstovne datoteke) in iz njih ne more biti razvidno kje so - lahko jih tudi ni. Da boš povezal te stvari moraš imeti izvajalne datoteke nekje na istem delu drevesne strukture kot so podatkovne datoteke.Če pa vseeno želiš imeti povezane source kodo (zakaj le?) s podatkovnimi datotekami moraš prebrati datoteko za VS projekt (*.vbproj) - to je navadna xml datoteka, kjer so vpisane poti do source kode in tako (posredno) do tvojih podatkovnih datotek.lp, pl
o-MA-n-tjaz - četrtek, 08. marec 2007
Če še bolj podrobno opišem problem. Imam kontrolo na kateri bi rad v design teimu izbrav css datoteko (iz drevesne strukture v propertyeditor-ju). Drevesna struktura pa želim da naloži mape in podmape iz mojega razvojnega direktorija (mapa kjer je shranjena vsa source coda mojega projekta ne pa dll-ji). Lp,Matjaž
pril - četrtek, 08. marec 2007
Ja, zato ker se tam izvaja koda - boš moral bolj natančno opisati kaj sploh imaš na d:\MojiProjekti\TestniProjekt\? Projekt (izvajalne datoteke) imaš v resnici na poti, ki ti jo je vrnil reflection objekt (tam kjer običajno predlaga visual studio pot, da začneš nov projekt), vendar - če boš želel distribuirat zadevo ali kakorkoli prenašat naokoli boš imel dll-je oz exe datoteke na istem direktorijskem drevesu kot podatke, zato bi bilo priporočljivo da si najprej sestaviš zadevo tako da bodo podatki in izvajalne datoteke vsaj približno skupaj in potem to uporabiš za to da dobiš pot do svojih podatkov.lp, pl
o-MA-n-tjaz - četrtek, 08. marec 2007
Tole System.Reflection.Assembly.GetExecutingAssembly.Location vrača:c:\Documents and Settings\User\Local Settings\Application Data\Microsoft\VisualStudio\8.0\ProjectAssemblies\xxxx\jaz pa rabim pot do mape kjer imam shranjen razvojni projekt (npr.: d:\MojiProjekti\TestniProjekt\) ne dll. Lp,Matjaž
F34R - četrtek, 08. marec 2007
Jaz sem te narobe razumel, ti bi rad lokacijo dll-ja v času izvajanja
pril - četrtek, 08. marec 2007
No ja, pri računalništvo je beseda nemogoče bolj stvar resursov (beri: časa, denarja ) namenjenih za rešitev problema. V tem primeru mislim, da je rešitev bolj enostavna. Če hočeš dobit pot za dll lahko uporabiš tale ukaz:System.Reflection.Assembly.GetExecutingAssembly.Locationče to ni stvar ki jo potrebuješ pa se še malo poigraj z reflection objektom - mislim da boš našel kar iščeš...lp, pl
F34R - četrtek, 08. marec 2007
To je nemogoče, no razen če mu ti poveš kje se nahaja ali pa uporabiš Build event
o-MA-n-tjaz - četrtek, 08. marec 2007
Ja hvala, vendar ne rabim tega.Jest razvijam en projekt in mene zanima root tega direktorija.Recimo da imam root razvoja projekta: d:\MojiProjekti\TestniProjekt\ in jest bi zdej rabu to mapo dobit, ne pa tisto, ki je na serverju, ko aplikacija laufa.Pa fora je da mam jest to v windows formi. Zdej delam en svoj design(property editor) in tm noter hočem dobit pot, kje je root mojih datotek.No men se zdi da bo zdej mal bolj jasen kaj iščem.
F34R - četrtek, 08. marec 2007
http://west-wind.com/weblog/posts/269.aspx