Share via


Universal Win Apps: Shared Project vs Portable Class Library – Advantages and Disadvantages

 

With the introduction of Visual Studio 2013 and the unified Windows runtime, developers can now build apps that natively target both Windows 8.1 and Windows phone 8.1. There are two mechanism that enable this: Shared Project and Portable Class Library.

Sometimes it becomes necessary to make choices as to which one makes the most sense under certain requirements. Below are some things to know that will help you in making that decision.

SHARED PROJECT

Also known as Shared Folder allows for a structured approach to building universal Windows apps.

They have some advantages:

    • Shared Folder enable the use of platform-specific APIs through the use of  conditional compilation
    • Shared Folder also enable cases where the source is compatible, but the binary wouldn't be, as when APIs are in different namespaces.

And some disadvantages:

    • They require sharing either the source code or multiple binaries, and this places part of the complexity on the consumer of the code.
    • They require convention and discipline to centralize handling of divergent APIs so that the code doesn't become maintainable.

PORTABLE CLASS LIBRARY (PCL)

PCL has been improved to better support building universal Windows apps. this support goes from the WinRT to XAML controls to the VS Editor. Like Shared Project, it has advantages and disadvantages.

Advantages:

    • It offers an extremely simply deployment and sharing model
    • It scales well to large systems requiring multiple solutions, involving third parties or multiple programming languages

Disadvantages:

    • Relies heavily on the fact that the targets have converged APIs
    • Handling divergent APIs requires using higher-level abstracts, such as dependency injection or Inversion of Control containers.

The convergence of Windows 8 and Windows Phone 8 will lead to level of unification that will continue to simply the developer experience (productivity), and yield end-user experiences that would be hard, if not impossible, in the platform silo days.

Are you a Startup and interested in expanding your reach? drop me a note (joelrey@microsoft.com). Let’s talk about your business/technical goals and how you can tap into our capabilities for Startups.

STARTUPCITIZEN
@startupcitizen
www.facebook.com/startupcitizen

Comments

  • Anonymous
    December 04, 2014
    Who on earth thought that disallowing link to files in the shared projects were a good idea? What's the point on maintaining common code when you can't reused them with android or iOS and you have to move it to a specific directory that microsoft decided to exist?

  • Anonymous
    December 17, 2014
    "They require convention and discipline to centralize handling of divergent APIs so that the code doesn't become maintainable." I think "maintainable" is a typo.

  • Anonymous
    August 22, 2015
    I was going to post the same comment as Chris. You mean "unmaintainable" but that sentence is brutal and a doesn't become unmaintainable is a lot of negatives.