Повторное использование кода в .NET и Monotouch решается многими способами, но большинство методов включают параллельные наборы проектов/решений.
Я хотел бы, чтобы этот вопрос прояснил, можно ли с помощью одного файла csproj создать либо версию .NET или MonoTouch одной и той же сборки на основе выбранной платформы и конфигурации.
Предположим следующее:
- Машина сборки работает под управлением Windows.
- Доступны Visual Studio и MSBuild.
- Этот метод не должен работать на MonoDevelop, так как MonoDevelop в настоящее время не включает XBuild/MSBuild для MonoTouch.
- Доступны двоичные файлы MonoTouch из допустимой установки MonoTouch.
- Only a library needs to be built, not a full app. This library:
- Does not contain any .xib's or plists.
- Использует ли специфичный для платформы код, который будет условно скомпилирован.
- Ссылается ли сборка на конкретную платформу (обязательно), и она должна обрабатываться файлом .csproj.
Вопрос. Учитывая эти допущения, может ли библиотека быть
- Скомпилировано для Windows .NET или
- Составлено для прямой ссылки приложением MonoTouch после копирования двоичного файла на Mac.
на основе текущей платформы и конфигурации Visual Studio?
Текущие исследования
- Тот факт, что переносимые библиотеки, скомпилированные в Windows, могут использоваться решениями MonoTouch, дает некоторую надежду на то, что это возможно.
- Использование
<NoStdLib>true</NoStdLib>
в .csproj при сборке для MonoTouch вместе с различнымиHintPath
для System, System.Core, System.Xml и т. д. кажется необходимым. - Не знаете, как указать правильную версию mscorlib при сборке для MonoTouch.