Мы начинаем кросс-платформенный проект, который будет развернут на Android и iOS. Очевидно, что много кода должно делиться между ними, а часть кода в значительной степени зависит от элементов платформы .NET, таких как библиотека sqlite-net.
Лучший способ (afaik) поделиться кодом между двумя проектами - использовать PCL - таким образом, можно ссылаться на проект с общим кодом из проектов iOS и Android в решении и все перекомпилировать и связанный в приятной манере.
Однако PCL, созданный в MonoDevelop, скомпилирован с компилятором gmcs, и в этом случае невозможно построить некоторые внешние зависимости (т.е. в используемом в этом случае фрейме System.Func<T, TResult>
, предоставляющем только System.Func<T1, T2, ..., T9, TResult>
). Компилятор MonoTouch (smcs), в свою очередь, способен скомпилировать PCL отлично (доказано заменой двоичного кода gmcs двоичным кодом smcs). Из того, что я нашел после нескольких поисковых запросов, gmcs использует 2.0.NET framework, в то время как smcs использует smth под названием 2.1 framework, которая на самом деле является срезанной смесью более поздних .NET.
Возникает вопрос: можно ли указать, какой компилятор использовать при построении PCL (как зависимости другого проекта) в MonoDevelop?