从库中确定运行时的.Net Framework

时间:2010-11-18 18:07:02

标签: c# silverlight windows-7 c#-4.0

我对.Net有点新鲜,所以对我很轻松;-)。反正。

我正在开发我的第一个WP7库项目,我希望它与XNA和SilverLight应用程序兼容。根据我是在XNA还是Silverlight,我的工厂类之一需要加载不同的配置类。什么是在运行时从库中确定这一点的最佳方法。

我知道我可以在编译时使用“SILVERLIGHT + WINDOWS_PHONE”预处理程序指令执行此操作。但这意味着要构建两个DLL,这并不理想。

〜嗅

2 个答案:

答案 0 :(得分:3)

我怀疑您所查找的信息可以在Environment.Version媒体资源或OperatingSystem.Version媒体资源中找到。

答案 1 :(得分:0)

我能想到的最好的就是设置你的图书馆:

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

然后,只需确保引用此库的项目具有指令集。有点像Microsoft如何使用调试条件类Debug.WriteLine(...)。我不知道如何使用2个不同的配置文件。我确信有一种方法,因为当你创建一个新的Web项目(ASP.NET)时,有一个配置文件被分成Web.Debug.config和Web.Release.config。我找不到关于如何在ASP.NET之外执行此操作的答案。