2010-11-18 17 views
2

Je suis un peu nouveau sur .Net, alors allez-y doucement sur moi ;-). En tous cas.Déterminer .Net Framework à l'exécution à partir d'une bibliothèque

Je travaille sur mon premier projet de bibliothèque WP7 qui, je l'espère, sera compatible avec les applications XNA et SilverLight. Selon que je suis dans XNA ou Silverlight, l'une de mes classes d'usine doit charger différentes classes de configuration. Quel est le meilleur moyen de déterminer cela à l'exécution, à partir d'une bibliothèque.

Je sais que je pourrais le faire avec les directives du préprocesseur "SILVERLIGHT + WINDOWS_PHONE" au moment de la compilation. Mais cela signifierait construire deux DLL, ce qui n'est pas idéal.

~ Sniff

Répondre

3

Je suppose que les informations que vous recherchez se trouvent dans la propriété Environment.Version ou dans la propriété OperatingSystem.Version.

+0

Cela m'a conduit dans la bonne direction. Merci. Environment.OSVersion était ce dont j'avais besoin. Sur WP7, il retourne (Microsoft Windows CE 7.0 ..). Et sur XBox, il retourne quelque chose avec Xbox. Dans mon cas, j'avais tort de penser que je devais savoir sur quel cadre j'étais, comme un collègue a souligné que je devais seulement savoir sur quel système d'exploitation j'étais. Merci encore. – eSniff

0

Le mieux que je pouvais penser est la configuration de votre bibliothèque comme ceci:

[Conditional(#XNA), 
Conditional(#WINDOWS_PHONE)] 
public void DoSomeWork() 
{ 
    var x = null; 
    x = DoSomeXNAWork(); 
    x = DoSomeWP7Work(); 

    if (x != null) 
    { 
     ... 
    } 
} 

[Conditional(#XNA)] 
private ?? DoSomeXNAWork() 
{ 
    return ??; 
} 

[Conditional(#WINDOWS_PHONE)] 
private ?? DoSomeWP7Work() 
{ 
    return ??; 
} 

Ensuite, assurez-vous que le projet faisant référence à cette bibliothèque a l'ensemble de la directive. Un peu comme comment Microsoft utilise les classes conditionnelles de débogage telles que Debug.WriteLine(...). Je ne sais pas comment vous pourriez l'utiliser pour utiliser 2 fichiers de configuration différents. Je suis sûr qu'il y a un moyen parce que quand vous créez un nouveau projet Web (ASP.NET) il y a un fichier de configuration qui est divisé en Web.Debug.config et Web.Release.config. Je ne pouvais pas trouver une réponse quant à la façon de le faire en dehors d'ASP.NET si.

+0

Pas la meilleure réponse dans mon cas, mais c'est cool! – eSniff