Avatar billede borrisholt Novice
18. juli 2007 - 19:58 Der er 6 kommentarer og
1 løsning

ET VS2005 Spørgsmål nååe ja og et lille side spm :D

Hej

Jeg sidder og roder med Remotable Objects, og det går meget fint synes jeg selv. Det virker i hverfald.

Meeen jeg har en problem:
Jeg har et shared object
public class Cache
{
  //bla bla bla
}

Den koder jeg i et projekt. Det fungerer fint nok.

Når jeg så i min client eller min server skal benytte mig af men klasse Cache så tilføjer jeg filerne til mit projekt server / klient men den laver en kopi. Kan jeg ikke få VS 2005 til at benytte sig af filerne der hvor de ligger, således jeg kun har en kopi af mine filer og ikke 3.

Jeg kunne selvfølgelig bare use NBamespacet fra min klasse (RemotableObjects) men så skal jeg distribuere DLL'en RemotableObjects med mine exe filer hvilker jeg helst er fri for.

Her kommer mit lille side spørgsmål: Jeg har kodet Delphi i en milliard år, og i Delphi ville jeg havde løst problemer med at lave et lille reosurce script som linkede min DLL ind i min exefil, så ville jeg bare pakke den ud når jeg havde behov for den .. Kan man det samme i C# ? Eller rettere hvordan?
Avatar billede lasserasch Juniormester
19. juli 2007 - 08:18 #1
Jeg har også 2 projekter i min Solution, som benytter en fælles klasse. Jeg har valgt at lave klassen som et seperat projekt i samme solution.

Og i stedet for at tilføje den ucompilerede klasse til begge projekter, så tilføjer jeg i stedet den compilerede DLL fil til begge projekter. På den måde, så skal jeg bare compile min klasse for at få den opdateret i begge af mine andre 2 projekter.

Og det virker super godt hos mig. Man skal så bare huske at compile klassen på ny, før man begynder at debugger i et af de 2 programmer.

/Lasse
Avatar billede md_craig Nybegynder
19. juli 2007 - 14:44 #2
lasserasch :

Hvis du istedet vælger at referere de 2 projekter til dit "common" projekt og ikke DLL'en så klarer VS den precompilering for dig hver gang du compilere de andre under debug/run
Avatar billede borrisholt Novice
19. juli 2007 - 15:08 #3
lasserasch >> er du ikke sød at tegne og fortælle.

Jeg er meget ny til VS2005, men på ingen måde ny til programmering.

Jens B
Avatar billede md_craig Nybegynder
19. juli 2007 - 18:06 #4
Nu ved jeg ikke hvordan du arbejder med din server klient... men det jeg plejer at gøre, og er lidt det samme som lasserasch har fat i er:

Lav et nyt projekt.
- File > New... > Project...

Vælg den passende type projekt, mange af de Client-Server løsninger jeg har lavet igennem tiden er typisk baseret på en service så det er typisk det jeg vælger, men det er jo altid op til en selv.

Navngivningen er for mig typisk: "MyCompany.MyProduct.MyProject"

MyCompany = Det firma jeg pt sider og udvikler i, udvikler jeg privat bruger jeg typisk "Jeme", som er valgt ud fra mit navn.

MyProduct = Det "produkt" man arbejder på, er det en ftpserver, man måske kalder CleanFTP bare for at vælge noget, jamen så smider jeg det ind her...

MyProject = Det er en specifik del i projektet... det kunne være et lognings modul, det kan være hele domænelaget, eller præsentationslaget... det kan også være Server, Klient og Common. for mindre simple server-client projekter har jeg derfor typisk:

MyCompany.MyProduct.Server
MyCompany.MyProduct.Common
MyCompany.MyProduct.Client

der er ingen opdeling af lagene inden for serveren eller clienten selv... på stører så har jeg typisk;

MyCompany.MyProduct.Server.Presentation
MyCompany.MyProduct.Server.Domain
MyCompany.MyProduct.Server.Technical
MyCompany.MyProduct.Common
MyCompany.MyProduct.Client.Presentation
MyCompany.MyProduct.Client.Domain

Som et eksempel...

Så... det var en forklaring af min normale måde at navngive på... så tilbage til det projekt vi var i gang med...

Projeck Navn sætter jeg så til fx: "MyCompany.MyProduct.Server"
Mens jeg navngiver min Solution: "MyCompany.MyProduct"

Derefter tilføjer jeg de to andre projekter også:
- File > Add... > New Project...

Vælger for hvert af dem et passende navn og type... min navngivning giver:

ClassLibrary: "MyCompany.MyProduct.Common"
WindowsApplication: "MyCompany.MyProduct.Client"

så vælger jeg over i min SolutionBrowser:

"MyCompany.MyProduct.Client" og højreklikker... vælger Add Reference...
Under fanen "Projects" der vælger jeg så mit Common Projekt... og gentager så for Serveren...

(Til sidst laver jeg gerne et testProject som starter min server op, og så min klient bagefter...)
--------------------------------------------------------------------------------------

Nu giver det dig self. lige præsis det du helst ikke vil have... nemlig en dll ved siden af, men det er nu ellers meget normalt når det er WinDåse vi udvikler på at man har det, samtidig kommer der sikkert nogle andre filer som indstillinger osv... såå... hva faen...

Men nu ved du hvordan jeg normalt gør den slags...


Så til det du måske KAN gøre... men som jeg aldrig har prøvet, så jeg ved ikke om det virker... men du kan jo afprøve det så...

Når du nu har lavet de 3 projekter som overstående, projekt opdellingen giver en god forståelse af hvor ting hører hjemme, så lad os beholde dette...

Så lukker du VS. ned igen (yes yes... en besværlig process men jeg ved ikke om du kan gøre dette igennem VS :P)...

Igem Explorer, (denne computer ect...) finder du nu frem til mappen hvori din solution er... her går du ind i mappen for din Client (der burde være en mappe til hvert projekt)...

Her finder du så en Csproj fil... den højreklikker du på og vælger åben med... og vælger notepad...

Nu kan du se at en projektfil bare er en xml fil... her finder du frem til en ItemBlok der indeholder nogle items der ligner:

<Compile Include="Program.cs" />

Der laver du nu en der krydser over til dit common projekt...

<Compile Include="..\MyCompany.MyProduct.Common\MyClassFile.cs" />

Og så skulle det projekt gerne compile den fil med... og den fil burde du nu kunne referere fra begge projekter så den bliver compilet med for både din server og klient... men du stadig kun har en fysisk fil...
Avatar billede md_craig Nybegynder
19. juli 2007 - 18:07 #5
Det sidste gør du naturligvis også for din Server projekt fil... altså tilføjre den Compile Include...
Avatar billede borrisholt Novice
29. juli 2007 - 22:21 #6
md_craig>> undskyld mit sene svar, men jeg har lidt travlt. Jeg skal nemlig flytte på tirsdag, til Vodskov skulle det intressere nogen?

Jeg har ikke haft tid til at kigge på det. Hvis du skynder dig at smide et svar så skal jeg acceptere det. Hvis ikke du er "hurtig nok" så går der nok en lille ugens tid inden jeg er online igen.

Jens B
Avatar billede md_craig Nybegynder
30. juli 2007 - 01:12 #7
Find nu ud af om det virker før du acceptere ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester