PDA

View Full Version : [C#] distinguere .NET e MONO (a livello di preprocessore?)


ekerazha
17-08-2006, 23:44
Sto sviluppando un programma in linguaggio C# e voglio che risulti utilizzabile sia col .NET Framework che con MONO.

A seconda che si stia utilizzando il .NET Framework o MONO ho però bisogno di includere (using) librerie differenti, quindi per intenderci necessito di qualcosa in stile "#ifdef WIN32" del C++.

... qualche idea? :sofico:

ekerazha
23-08-2006, 14:36
Nessuno? :doh:

Marco Giunio Silano
23-08-2006, 15:29
Sto sviluppando un programma in linguaggio C# e voglio che risulti utilizzabile sia col .NET Framework che con MONO.

A seconda che si stia utilizzando il .NET Framework o MONO ho però bisogno di includere (using) librerie differenti, quindi per intenderci necessito di qualcosa in stile "#ifdef WIN32" del C++.

... qualche idea? :sofico:

Ma lo compili tu in due modi differenti a seconda di dove verrà utilizzato?

aldonation
23-08-2006, 15:29
Non puoi fare diverse configurazioni e definire per ciascuna i simboli che vuoi usare?

Per esempio:

Crei una nuova configurazione chiamata Release MONO e nelle opzioni del progetto vai nella scheda Build e scrivi nel campo Conditional compilation symbols la parola MONO...in questo modo puoi usare nel codice l'espressione #if (MONO) per compilare o meno il codice...

EDIT: Sto facendo confusione di compilatori anch'io :p
Basta che usi #IF (simbolo) per escludere o compilare il codice...poi per ciascun compilatore devi fare tu in modo che venga utilizzato un dato simbolo in fase di compilazione...sopra ho scritto come si fa con visual studio, ma con mono non so se è fattibile una cosa del genere (in maniera grafica)...forse lo puoi fare con sharpdevelop :stordita:

Marco Giunio Silano
23-08-2006, 15:37
Non puoi fare diverse configurazioni e definire per ciascuna i simboli che vuoi usare?

Per esempio:

Crei una nuova configurazione chiamata Release MONO e nelle opzioni del progetto vai nella scheda Build e scrivi nel campo Conditional compilation symbols la parola MONO...in questo modo puoi usare nel codice l'espressione #if (MONO) per compilare o meno il codice...

Senza farsi due conf, può (come voleva fare per #ifdef WIN32) una sue ifdef per MONO e non. Ma non ho ben capito le sue esigenze.

ekerazha
23-08-2006, 16:16
Ma lo compili tu in due modi differenti a seconda di dove verrà utilizzato?
Si... volevo soltanto sapere se devo gestirmi la cosa "manualmente" (che so... definisco qualcosa o meno a seconda se voglio compilarlo per MONO o per .NET) o se c'è un modo per dire al preprocessore che deve includere alcune cose nel caso sia MONO o oltre cose nel caso sia il .NET Framework (in modo "autonomo" diciamo).

:)

Marco Giunio Silano
23-08-2006, 16:24
Si... volevo soltanto sapere se devo gestirmi la cosa "manualmente" (che so... definisco qualcosa o meno a seconda se voglio compilarlo per MONO o per .NET) o se c'è un modo per dire al preprocessore che deve includere alcune cose nel caso sia MONO o oltre cose nel caso sia il .NET Framework (in modo "autonomo" diciamo).

:)

Non conosco la questione nel dettaglio, ma ho idea che devi farti tutto a manina.

aldonation
23-08-2006, 16:30
Per il "manualmente" l'unico lavoro aggiuntivo è specificare il simbolo che vuoi usare in fase di compilazione...il resto sarebbe uguale ad un possibile metodo "automatico" (di cui non sono a conoscenza)...