Shared projects
Pros | Cons |
---|---|
All Api's Available | Can lead to spaghetti code |
Platform-specific logic can be added directly | Difficult to unit test conditional code |
All file types can be shared | Must be shipped in source form |
Smaller package sizes/platform-specific optimizations |
DLL's
Pros | Cons |
---|---|
Enforces architectural design | Limited APIs available |
Can be unit tested separately | Difficult to share non-code files |
Can be shipped in binary form (NuGet) | Limited to target platforms or APIs |
Requires more work to integrate platform-specific code |
So which to choose, well generally if your team is small your project is small and the core of it is the UWP/DROID/IOS project then maybe a shared project is the best approach.
however if your team is large and your Application is part of a greater solution, or you want to leverage unit testing or you are working in an enterprise environment then perhaps you should consider a .net shared library
or you could do some sort of hybrid approach, where models are in a dll and business logic is in the shared project because it's specific to the application, it really depends on your problem domain.