2010-11-18 6 views
2

私は幾分ネットに慣れていますので、簡単に私のところに行きます;-)。とにかく。ライブラリーから実行時に.Net Frameworkを決定する

私はXNAとSilverLightの両方のアプリケーションと互換性があることを望む私の最初のWP7ライブラリプロジェクトに取り組んでいます。私がXNAであるかSilverlightであるかに基づいて、私の工場クラスの1つが異なる設定クラスをロードする必要があります。実行時にこれをライブラリから判断する最良の方法です。

コンパイル時に "SILVERLIGHT + WINDOWS_PHONE"プリプロセッサディレクティブでこれを行うことができます。しかし、それは理想的ではない2つのDLLを構築することを意味します。ただ、このライブラリを参照するプロジェクトがディレクティブが設定されていることを確認し、その後

[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 ??; 
} 

〜、私はそうのようなあなたのライブラリーを設定されたと考えることができ

答えて

3

あなたが探している情報は、Environment.VersionプロパティまたはOperatingSystem.Versionプロパティで見つかる可能性があります。

+0

これは正しい方向に私を導きます。ありがとう。 Environment.OSVersionは私が必要としていたものです。 WP7では(Microsoft Windows CE 7.0 ..)を返します。 XBoxでは、Xboxで何かを返します。私の場合、どのフレームワークを使用しているかを知る必要があると思ったのは間違っていました。同僚は、どのOSを使用しているかだけを知る必要があると指摘しました。再度、感謝します。 – eSniff

0

最高のにおいを嗅ぎます。 Microsoftがどのようにデバッグ条件クラスを使用するかのような種類のDebug.WriteLine(...)。私はあなたが2つの異なる設定ファイルを使用する方法を確信していません。私は新しいWebプロジェクト(ASP.NET)を作成するときに、Web.Debug.configとWeb.Release.configに分割された設定ファイルがあるため、方法があると確信しています。私はASP.NETの外でそれを行う方法についての答えを見つけることができませんでした。

+0

私の場合は最高の答えではありませんが、これはクールなものです! – eSniff

関連する問題