2013-08-08 4 views
2

Я использую C# для создания игры с использованием MonoGame, которую я хочу использовать на нескольких платформах (что я знаю, что MonoGame может делать).Использование .NET DLL на нескольких платформах

Есть ли способ создать DLL на C# и загрузить его из других операционных систем (желательно iOS, Android и MacOS) без перекомпиляции библиотеки? Я готов написать приложение «loader» для каждой платформы, но не хотел бы переписывать весь проект.

Я надеюсь, что на этих платформах можно загружать функции из DLL .net (т. Е. Загружать игру) без использования платных продуктов, таких как MonoTouch.

ответ

2

В основном сборки .NET/Mono собираются с использованием кода CIL, который является стандартом ECMA.

Однако вам по-прежнему необходимо запрограммировать свою игру таким образом, чтобы она не зависела от особенностей ОС.

  • Не относятся к определенной сборки .NET (т.е. не WCF, потому что она имеет лишь ограниченную поддержку WCF, не WPF вообще, нет WWF)
  • Не относятся к ОС конкретных библиотек DLL (т.е. нет P/Запускает в kernel32.dll и т.д.
  • не использовать ОС конкретных трактов или использовать директивы препроцессора, чтобы сделать OS Specific код (да, это потребует перекомпиляции и вы, вероятно, не будет обойти это легко)

Threading on Mono имеет некоторые уловы, поэтому вам, вероятно, придется составить код конкретной платформы, используя препроцессор direct Айвз.

Честно говоря, я не вижу проблемы с перекомпиляцией кода, если это четко написано, это просто вопрос добавления нового проекта в файл решения и установки флагов препроцессора. Тогда все, что вам нужно сделать, это компилировать решение и иметь несколько библиотек DLL в папке bin. Никто никогда не говорил, что вам нужно переписать полный проект (если проект уже не закончен и не имеет какой-либо из упомянутых там зависимостей), что в этом случае ... это ваша собственная ошибка, потому что вам не нужно об этом думать до начиная разработку.

Вам просто нужно развернуть свои приложения (на iOS и т. Д.) С требуемым временем выполнения Mono. И для этого вам, возможно, понадобится что-то вроде Xamarin или проволочных вверх свой собственный Mono выполнения

Справочные ссылки: http://www.mono-project.com/Compatibility http://www.mono-project.com/MoMA

+0

Благодарим вас за ваш совет. –

+0

С перекомпиляцией я бы предпочел не делать этого, но, похоже, мне придется. Но использование Xamarin (коммерческого продукта) является проблемой. –

+0

Могло ли быть лучшее решение, чтобы приложение запускало и загружало и интерпретировало что-то вроде JavaScript? Это может привести к повторному использованию кода –

1

Вы можете посмотреть Xamarin-Framework. Но вы всегда должны перекомпилировать свой проект. Xamarin

на этих платформах без использования платных продуктов, таких как MonoTouch.

Это будет сложно.

+0

MonoTouch является Xamarin.iOS. Это то, чего я пытаюсь избежать. –

+0

Кроме того, это может быть совершенно неправильно, но я слышал о P/Invoke, который можно использовать для вызова функций dll. Может ли это работать с другой платформы? –

+0

У других платформ отсутствуют библиотеки DLL, такие как Microsoft. Так что я думаю, что это не twork – BendEg

Смежные вопросы