【问题标题】:Determining .Net Framework at runtime from a library在运行时从库中确定 .Net Framework
【发布时间】:2010-11-19 02:49:38
【问题描述】:

我对 .Net 有点陌生,所以请放轻松 ;-)。无论如何。

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

我知道我可以在编译时使用“SILVERLIGHT+WINDOWS_PHONE”预处理器指令来做到这一点。但这意味着构建两个 DLL,这并不理想。

~闻

【问题讨论】:

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


    【解决方案1】:

    我怀疑您要查找的信息可以在Environment.Version 属性或OperatingSystem.Version 属性中找到。

    【讨论】:

    • 这引导我走向正确的方向。谢谢。 Environment.OSVersion 是我需要的。在 WP7 上它返回(Microsoft Windows CE 7.0..)。在 Xbox 上,它通过 Xbox 返回一些东西。就我而言,我认为我需要知道我在哪个框架上是不正确的,正如一位同事指出的那样,我只需要知道我在哪个操作系统上。再次感谢。
    【解决方案2】:

    我能想到的最好的方法就是像这样设置你的库:

    [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 条件类,例如 Debug.WriteLine(...)。我不确定如何让它使用 2 个不同的配置文件。我确信有一种方法,因为当您创建一个新的 Web 项目 (ASP.NET) 时,有一个配置文件被拆分为 Web.Debug.config 和 Web.Release.config。不过,我找不到关于如何在 ASP.NET 之外执行此操作的答案。

    【讨论】:

      猜你喜欢
      • 2012-10-21
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2013-10-06
      • 2018-06-23
      • 1970-01-01
      • 2019-01-01
      • 2021-04-04
      相关资源
      最近更新 更多