Определение .Net Framework во время выполнения из библиотеки - PullRequest
2 голосов
/ 18 ноября 2010

Я немного новичок в .Net, так что будьте спокойны со мной ;-).В любом случае.

Я работаю над своим первым проектом библиотеки WP7, который, я надеюсь, будет совместим с приложениями XNA и SilverLight.В зависимости от того, нахожусь ли я в XNA или Silverlight, один из моих классов фабрики должен загрузить другой класс конфигурации.Какой лучший способ определить это во время выполнения, из библиотеки.

Я знаю, что мог сделать это с помощью директив препроцессора "SILVERLIGHT + WINDOWS_PHONE" во время компиляции.Но это будет означать создание двух DLL, что не идеально.

~ Sniff

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

Я подозреваю, что информацию, которую вы ищете, можно найти в свойстве Environment.Version или в свойстве OperatingSystem.Version.

0 голосов
/ 18 ноября 2010

Лучшее, о чем я мог подумать, это настроить вашу библиотеку так:

[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 разных файла конфигурации. Я уверен, что есть способ, потому что, когда вы создаете новый веб-проект (ASP.NET), есть файл конфигурации, который разделен на Web.Debug.config и Web.Release.config. Я не смог найти ответ, как это сделать за пределами ASP.NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...