webForumDet fria alternativet

Bästa tekniken för eget kodbibliotek

.NET

6 svar · 815 visningar · startad av haagel

Medlem sedan feb. 2006134 inlägg
Frågan#1

Jag håller just nu på med flera separata projekt (webbapplikationer) och inser att mycket av koden kommer att vara identisk i de olika projekten. Jag tänkte därför lägga all den gemensamma koden i en egen solution som jag sedan kan återanvända när jag vill. Det handlar alltså om generell kod såsom kommunikation med databaser, serialisering etc...

Detta är ju inget problem i sig, men hur gör jag smidigast för att använda denna kod i de olika projekten? Hur gör ni?

Jag får ju assemblies/dll:er när jag kompilerar denna kod. Just nu så gör jag bara så att jag debuggar och testar koden tills jag anser att den fungerar som den ska. Sedan kopierar jag de dll:er som nu finns i varje projekts (i kodbibliotekets solution) bin/Debug-katalog till en annan extern katalog. Det är sedan till de dll:er som ligger i denna katalog jag refererar till i de projekt som ska utnyttja dessa (de separata webbprojekten i mitt fall).

Det här innebär att jag alltid måste sitta och manuellt kopiera dll:erna varje gång jag ska uppdatera den kod som används av webbprojekten. Å andra sidan så vet jag ju att de dll:er som ligger i denna externa mapp alltid är testade och ok, något jag inte kan vara säker på ifall jag skulle refererat direkt till bin/Debug-katalogerna (vilket inte känns så seriöst heller för den delen).

Är det här ett dumt sätt? Finns det något bättre/smidigare? Hur isåfall?

Medlem sedan feb. 2006134 inlägg
#2

Ber om ursäkt för de smilies som dykt upp i inlägget, men jag vet inte hur jag får bort dem...

Medlem sedan maj 200010 687 inlägg
#3

Jag vet inte vad det finns för best practices kring sånt här, men kan säga hur jag gjort med det Framework som jag jobbat med.

Mappstruktur:
Dev
--Doc
--Lib
--Solutions
--Src
----Incordia.Framework.Cache
----Incordia.Framework.DataAccess
----.....
--Test
Main
--Branch av Dev
Release
--Incordia.Framework.Cache
----1.0
------bin
----1.1
------bin
--Incordia.Framework.DataAccess
----1.0
------bin

1. Kodar i Dev branchen (projekten ligger i Src), fixar till dokumentationen (Doc), lägger 3:e parts dll:er i Lib, test-projekt i Test.
2. När jag är klar så uppdaterar jag versionsnumret.
3. Mergar från Dev-branchen till Main-branchen.
4. Öppnar solutionen i Main.
5. Kompilerar i release läge. Har inställt på projektet att generera XML dokumentation.
6. Skapar upp ny mapp i Release mappen med rätt versionsnummer.
7. Kopierar in dokumentationen för den versionen i mappen.
8. Kopierar dller/XMLer till bin mappen.
9. Genererar API-dokumentationsfil med hjälp av SandCastle och lägger i mappen bredvid den skrivna dokumentationen.
10. Skapar en enkel liten Updates.txt fil som säger kortfattat vad som har ändrats i den nya versionen.

När jag gjort detta så finns den nya releasen tillgänglig för användning.
På det här sättet får man en bra överblick över versionerna.
Och genom att sätta versionsnummer på dllerna så vet man vilken som används i de olika projekten.

Sen kan jag tänka mig att om det bara är för din egen skull så kan man hoppa över flera steg. Branches/Merge kanske inte är så aktuellt, du kanske inte ens har någon source control. Och dokumentation är kanske inte heller så viktig.
Men saker som att kompilera i release läge, sätta versionsnummer och ha en bra struktur kan vara intressantare...

Medlem sedan juni 20008 205 inlägg
#4

Jag brukar försöka undvika att referera till DLL:er, och istället referera direkt projekten i källkodsform så att jag vet att jag alltid bygger med senaste versionen av koden. Förvisso kan det uppstå integrationsproblem, men mitt antagande är som så att bygger man en ny version beror det på att man lagt till ny/ändrat befintlig funktionalitet, och då måste man testa, och testerna borde då rimligen fånga integrationsproblemen.

Medlem sedan juli 20013 378 inlägg
#5

haagel skrev:

Ber om ursäkt för de smilies som dykt upp i inlägget, men jag vet inte hur jag får bort dem...

Hej haagel!
Inga problem, det är en - ehm - egenskap som dök upp här på wF vid versionsuppgraderingen nyligen, och förhoppningsvis försvinner fenomenet också snart.

Men tills dess finns det en workaround:
Det finns en kryssruta "stäng av smilies" under "Tilläggsalternativ" när du redigerar inlägget i "avancerat läge" (via knappen "Till avancerad")

Medlem sedan feb. 2006134 inlägg
#6

Tack för era svar!

Om det är fler som vill dela med sig av sina sätt att hantera "kodbibliotek" så är jag fortfarande intresserad.

Erik:
Blir det någon skillnad på själva DLL:erna då man kompilerar i Releaseläge?

Medlem sedan jan. 20022 440 inlägg
#7

haagel skrev:

Blir det någon skillnad på själva DLL:erna då man kompilerar i Releaseläge?

Ja default så optimeras koden och du slipper debug infon vilket snabbar upp ordentligt.

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)