While writing Xamarin Cross-Platform Applications, one might encounter a lot of instances where similar functionality needs to be implemented across various platforms, which is generic. To facilitate this and allow code reuse, it makes utmost sense to share some common piece of code between these platforms as it saves time, reduces error scope and is easy for maintenance. Xamarin provides three common approaches to share code between Cross-Platform Applications:- .NET Standard Libraries Shared Projects Portable Class Libraries (Deprecated) 1. .NET Standard Libraries .NET Standard Libraries is a way to share common code over multiple runtimes. .NET Standard is a set of specifications which various .NET runtimes adhere to and hence code written for one version of .NET Standard works on multiple versions of .NET runtimes like .NET Core, Mono, etc.  You can write your code and compile it into .NET Class Library and share it with others. The primary benefits of using this approach are: It allows you to share code across multiple projects When you refactor, all affected references are updated at once. Disadvantage You cannot do the conditional compilation for specific platforms using the #if directive It is somewhat similar to PCL but with a simpler model for platform support. 2. Using Shared Projects Shared Projects are the usual .NET application projects that contain code files and assets. Shared Projects are meant to be included in other projects and help in code reuse. It is a code level sharing technique. A cross-platform application that supports iOS, Android, and Windows would require an application project for each platform and a separate Shared Project for the code common to all. So, if you are creating a cross-platform app for Android, iOS, and Windows, you will usually have the following projects Shared Project – the Shared Project that contains the code which is common for all platforms viz iOS, UWP, Android AppAndroid – the Xamarin.Android project that specifically calls the underlying .NET APIs exposed for Android AppiOS – Xamarin.iOS application project that specifically calls the underlying .NET APIs exposed for iOS AppWindows – Windows application project that utilizes exposed Windows APIs and specific to UWP (Universal Windows Platform) A Shared Project is not directly compiled. In other words, no DLL file is produced in the compilation process. Instead, the files are compiled into the same DLL as the project that references it. This way, it is possible to write blocks of platform-specific code in the Shared Project that will only be compiled by the specific platform. The advantages of using this technique are:- Allows you to share common code across multiple projects. The shared code can be branched based on the platform using compiler directives (eg. using #if __ANDROID__ or #if __IOS__) Application projects can include platform-specific references that the shared code can utilize Disadvantages:- They do not produce any output assembly of their own. Hence, not used for sharing and distributing to other developers 3. Portable Class Libraries (Deprecated) When you create an Application Project or a Library Projection compiles into a DLL, it is restricted to work only on a  specific platform, i.e. the one it is created for. This is attributed to the fact that the various platforms use different .NET runtime ecosystems. This prevents you from writing an assembly for one and runs it on all .NET Runtimes. Portable Class Library allows you to develop a Class Library that can run for multiple platforms. You can choose a set of platforms for the Portable Class Library while creating it. This choice is represented by the  "Profile" identifier and helps in identifying the platforms the Portable Class Library is meant to work with.  The benefits of using this approach are:- Allows you to share code across multiple projects. When you refactor, all affected references are updated at once. Disadvantages:- Deprecated in the latest versions of Visual Studio, .NET Standard libraries are recommended instead. You cannot do the conditional compilation for specific platforms using the #if directive Only a subset of the .NET framework is available to use, determined by the profile selected It’s possible to convert a PCL to a .NET Standard project by changing the target of your project to .Net Standard. This is one of the most frequently asked Xamarin interview questions for freshers in recent times.