Conflicts between Portable and non-Portable libraries

Topics: General
Feb 20, 2014 at 10:40 PM
So we have a PCL that uses Nuget to get Package A. It rightly selects the portable version and one of the imported references is Microsoft.Data.Services.Client.Portable.dll

We also have several Silverlight and .Net (and potentially W8, WP8) projects that reference the PCL library. I use Nuget to pull in Package A (or any other package, really), but since they're not portable Nuget set the targetFramework="xxx" to non-portable, which pulls in Services.Data.Services.Client.dll.

Of course, this is a big problem, because Microsoft.Data.Services.Client.Portable.dll and Services.Data.Services.Client.dll implement the same namespaces. This is not good! :)

The non-PCL projects can't compile because they're missing Microsoft.Data.Services.Client.Portable.dll. I can add that dll manually, but , it causes all kinds of runtime errors and really messes up the debugger.

I did read the Nuget docs on why it makes this decision, but it seems just wrong to me. Seems like the targetFramework should be portable if we have any references to any portable libraries, or at least let us override it.

I tried just manually changing targetFramework in packages.config and doing a Update-Package -reinstall, but that just reverts it back to the original value. A a setting in the packages.config (or at the solution level) to force a certain framework selection might work.

So what can we do about this? Please help!!