Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Code sharing between MonoTouch and MonoForAndroid

What would be the best practice to share busines logic c# code between MonoTouch and Mono For Android projects?

Edited: Initially, my question was about the physical file sharing:

  1. What do you propose to use: network file sharing or some code version control (git, svn)? In my case I am using two workstations - Mac (MonoDevelop with MonoTouch) and PC (Visual Studio with MonoDroid).
  2. What about Solution/Project folder structure? In "Blog Post: Xamarin Mobile World Congress 2012 Unofficial Conference App Released!" example structure is quite confusing: several solutions in one folder and then different platform projects in one subfolder with different folder and project names. It can not be accomplished nativly with IDE. Are they editing content of solution files and folder names manualy outside of IDE environment?
  3. And for projects of common code what kind of profile (template) to use? Monotouch has several: Empty Project, MonoTouch Library Project and MonoTouch Binding Projects? In Android i supose - Android class library?
like image 445
Arvis Avatar asked May 18 '12 16:05

Arvis


People also ask

What is the recommended method for sharing code across web pages?

NET Standard is the best choice for building sharable code libraries (especially publishing on NuGet). Shared Projects work well for application developers planning to use lots of platform-specific functionality in their cross-platform apps.

What is shared project in xamarin forms?

Shared Projects let you write common code that is referenced by a number of different application projects. The code is compiled as part of each referencing project and can include compiler directives to help incorporate platform-specific functionality into the shared code base.

What is PCL in Xamarin?

What is a Portable Class Library? When you create an Application Project or a Library Project, the resulting DLL is restricted to working on the specific platform it is created for. This prevents you from writing an assembly for a Windows app, and then re-using it on Xamarin. iOS and Xamarin. Android.


1 Answers

This is a very general question, but here are a few resources that may help you get started:

  1. Video: Cross-platform Mobile Development
  2. Blog Post: Shared Libraries For Windows Phone 7, MonoDroid and Beyond
  3. Book: Mobile Development with C#
  4. Blog Post: Xamarin Mobile World Congress 2012 Unofficial Conference App Released!

Edit (to answer your new questions)

  1. The idea behind linking files across projects is that there is only one actual copy of the file, rather than having to manage multiple copies and keep them in sync yourself. The file will actually exist in just one project and be linked into the others, but when the projects are compiled it treats the file as if it were actually there.

  2. I can't speak to exactly how they created their folder structure, but I know there have been many cases where I would manually edit project or solution files to get the folder structure I want, because there was no way to get what I wanted through the IDE alone. This really boils down to personal preference on how you want your folders to be structured.

  3. In the end, what you need is a class library project for every platform you want to target. When going with the linked file approach, it's totally up to you where you put the physical files. One approach I use often is to actually create a standard .NET 4.0 class library, put the files in there, and then link them into my Mono for Android and MonoTouch class libraries. If all you care about is targeting iOS and Android, that may be more trouble than it's worth, and you can just let the files live in one project and link them into the other.

like image 124
Greg Shackles Avatar answered Oct 02 '22 05:10

Greg Shackles