Avete sviluppato una libreria di business logic, e la 
volete utilizzare sia in un applicativo desktop che in un applicativo mobile: 
come fare?
E' un problema che prima o poi dovremo affrontare tutti, e penso sia una 
delle domande maggiormente post sui forum del CompactFramework: gironzolando sui 
vari blog di sviluppatori mobile e sui forum dedicati si trovano due diversi 
approcci:
  - condividere il binario 
  
 - condividere il sorgente
 
Il primo caso presuppone che si sia sviluppata una device class library senza 
funzionalità specifiche per mobile (no accesso a Irda, SMS, camera, SQL Mobile, 
ecc...): in questo caso è possibile aggiungere il progetto come reference ad una 
normale WinForm application.
Visual Studio darà un warning, ma poi tutto 
funzionerà (o almento dovrebbe 
) poichè quasi tutti gli assembly del Compact Framework 
hanno il System.Reflection.AssemblyNameFlags impostato 
a Retargetable, cioè possono essere "rimappate" su un'altro 
assembly. Per una spiegazione migliore di questo argomento vi rimando al post 
"Retargetable (=256)" sul blog di Daniel Moth, ex 
MVP Windows Mobile.
Nel secondo caso invece si adotta un'approccio differente: si crea 
normalmente la libreria per WinForm. Poi si crea una class library per 
mobile, ma, invece che aggiungere item nuovi, si aggiungono gli item presenti 
nella libreria sviluppata per WinForm, linkandoli invece che inserendoli: 
così facendo il file contenente il codice è uno solo, ma viene usato per 
compilare due librerie differenti.
Questo approccio 
permette anche di avere funzionalità aggiuntive nella libreria per desktop: è 
sufficiente racchiudere il codice che non andrebbe su CF all'interno di clausole 
di compilazione condizionale #if.
#if DESKTOP
//Siamo su Desktop
Bitmap bmp = new Bitmap(ConfigManager.RESOURCE_LOCALPATH + "\\" + fileName);
#else
//Siamo su Mobile
Bitmap bmp = new Bitmap(ConfigManager.Current.DirectoryPath + "\\"
    + ConfigManager.RESOURCE_LOCALPATH + "\\" + fileName);
#endif
Sempre Moth spiega in un suo post "Share Code (#if FULL_FRAME)", questo approccio, che 
lui considera migliore della condivisione del binario.
Della stessa opinione 
è anche Ed Kaim, uno dei moderatori del ng microsoft.public.dotnet.framework.compactframework, 
il quale dice che per lui è prassi comune adottare questo approccio.
Anche il nostro buon Roberto Brunetti, in un 
thread sul ThinkMobile.it mi ha suggerito lo stesso 
approccio...
powered by IMHO 1.3