Хочу сделать EXE файл, который можно будет запускать под Win2k/WinXP/Linux/MacOS/XBOX 360...
На каждой из платформ будут использоваться разные библиотеки для вывода графики, соответственно хочу сделать что-то вроде такого:
public enum PlatformType
{
Windows2000,
WindowsXP,
Linux,
MacOS,
Xbox
}
public static void Main(string[] args)
{
switch(getTargetPlatform())
{
case PlatformType.Windows2000:
Framework2k.Run();
break;
case PlatformType.WindowsXP:
FrameworkXP.Run();
break;
case PlatformType.Linux:
FrameworkLinux.Run();
break;
case PlatformType.MacOS:
FrameworkMacOS.Run();
break;
case PlatformType.MacOS:
FrameworkXbox.Run();
break;
}
}
private static PlatformType getTargetPlatform()
{
// Как реализовать этот метод???
}
Соответственно, дополнительный вопрос — не возникнет ли проблем из-за того что в приложении существуют классы которые не будут использоваться, ссылающиеся на несуществующие сборки?
Заранее спасибо за помощь
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re: Как определить платформу на которой запущно C# приложени
Здравствуйте, Alexey M., Вы писали:
_M_>>private static PlatformType getTargetPlatform() _M_>>{ _M_>> // Как реализовать этот метод??? _M_>>} _M_>>[/c#]
AM>Есть System.Environment.OSVersion. Но мне кажется его возможностей будет недостаточно. Видимо стоит пользоваться PInvoke для определения платформы.
хм, а разве pinvoke будет работать на linux\mono?
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[3]: Как определить платформу на которой запущно C# прилож
Здравствуйте, Alexey M., Вы писали:
AM>Здравствуйте, _Morpheus_, Вы писали:
_M_>>хм, а разве pinvoke будет работать на linux\mono?
AM>Если честно, точно не знаю, но IMHO там должны быть средства для обращения к нативным библиотекам.
Здравствуйте, _Morpheus_, Вы писали:
_M_>Хочу сделать EXE файл, который можно будет запускать под Win2k/WinXP/Linux/MacOS/XBOX 360...
_M_>На каждой из платформ будут использоваться разные библиотеки для вывода графики, соответственно хочу сделать что-то вроде такого:
[злобно заскипано] _M_>Соответственно, дополнительный вопрос — не возникнет ли проблем из-за того что в приложении существуют классы которые не будут использоваться, ссылающиеся на несуществующие сборки?
для того, чтобы проблем не возникало — опиши общие интерфейсы для всего, что связано с графикой (не будешь же ты switch ставить везде, где вывод линии делается )ну а конкретную библиотеку подгружай динамически... через Reflection.
... << RSDN@Home 1.2.0 alpha rev. 789>>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re: Как определить платформу на которой запущно C# приложени
Здравствуйте, Hacker_Delphi, Вы писали:
_M_>>Соответственно, дополнительный вопрос — не возникнет ли проблем из-за того что в приложении существуют классы которые не будут использоваться, ссылающиеся на несуществующие сборки? H_D>для того, чтобы проблем не возникало — опиши общие интерфейсы для всего, что связано с графикой (не будешь же ты switch ставить везде, где вывод линии делается )ну а конкретную библиотеку подгружай динамически... через Reflection.
да это уже и так давно реализовано, классы engine'а требуют только IntPtr на буффер куда нужно рисовать и параметры буфера, больше им для рисования ничего не нужно — им этого достаточно
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re: Как определить платформу на которой запущно C# приложени
Здравствуйте, _Morpheus_, Вы писали:
_M_>Хочу сделать EXE файл, который можно будет запускать под Win2k/WinXP/Linux/MacOS/XBOX 360...
_M_>На каждой из платформ будут использоваться разные библиотеки для вывода графики, соответственно хочу сделать что-то вроде такого: _M_>[c#] _M_>public enum PlatformType _M_>{ _M_> Windows2000, _M_> WindowsXP, _M_> Linux, _M_> MacOS, _M_> Xbox _M_>}
Environment.OSVersion.Platform
смотрел?
Re[2]: Как определить платформу на которой запущно C# прилож
Member name Description
Unix The operating system is Unix.
Win32NT The operating system is Windows NT or later.
Win32S The operating system is Win32s. Win32s is a layer that runs on 16-bit versions of Windows to provide access to 32-bit applications.
Win32Windows The operating system is Windows 95 or later.
WinCE
XBOX там нету...
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[3]: Как определить платформу на которой запущно C# прилож
Здравствуйте, _Morpheus_, Вы писали:
_M_>XBOX там нету...
А меня есть
Members
Member name Description
Win32S The operating system is Win32s. Win32s is a layer that runs on 16-bit versions of Windows to provide access to 32-bit applications.
Win32Windows The operating system is Windows 95 or later.
Win32NT The operating system is Windows NT or later.
WinCE The operating system is Windows CE.
Unix The operating system is Unix.
Xbox The development platform is Xbox 360.
похоже добавили в новом фреймворке, только в каком не написано, предположительно в 3.5
Re[4]: Как определить платформу на которой запущно C# прилож
Здравствуйте, _Morpheus_, Вы писали:
_M_>Нашел как определить что прога запущена под Mono
Только не забыть, что Mono и под Win бывает
Re[3]: Как определить платформу на которой запущно C# прилож
От:
Аноним
Дата:
06.02.08 11:40
Оценка:
Здравствуйте, SilverCloud, Вы писали:
SC>Здравствуйте, _Morpheus_, Вы писали:
_M_>>Нашел как определить что прога запущена под Mono SC>Только не забыть, что Mono и под Win бывает