Runtime: System.Runtime.InteropServices.RuntimeInformation fails to install in Classic PCL with NuGet 2.x

Created on 30 Jul 2016  路  24Comments  路  Source: dotnet/runtime

The System.Runtime.InteropServices.RuntimeInformation package will fail to install on NuGet 2.x because there is no lib\netstandard1.1 version. There is only a runtimes\win\lib\netstandard1.1 version, but as NuGet 2.x doesn't understand runtimes, it'll fail.

This affects installing .NET Standard Libraries into a PCL Profile 111 as it's included by NETStandard.Library when evaluating dependencies for pcl profiles.

To repro:

With VS 2013 and NuGet 2.12

  • Create a new PCL targeting .NET 4.5, Windows 8 and Windows Phone 8.1 (Profile 111).
  • In the NuGet package manager, try to install the S2Geometry library

Actual results

Could not install package 'System.Runtime.InteropServices.RuntimeInformation 4.0.0'. You are trying to install this package into a project that targets 'portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

The S2Geometry library is a netstandard1.0 library and follows the advice of having a dependency on netstandard.library 1.6.0.

/cc @ericstj

area-System.Runtime.InteropServices

Most helpful comment

This work for me.
When i ran into that issue today. I had to install System.Runtime.InteropServices.RuntimeInformation before i install autofac.

  1. Install-package System.Runtime.InteropServices.RuntimeInformation
  2. install-package autofac
    That just work for me.

All 24 comments

Are there other packages in the same situation as well?

I'm running into this issue using VS2015 Update 3 and both a Profile44 and Profile111 library.

To repro:

With VS 2015 Community Update 3 and NuGet 3.5

  • Create a new PCL targeting either Profile44 or Profile111.
  • Try to install System.Runtime.InteropServices.RuntimeInformation 4.0.

_Could not install package 'System.Runtime.InteropServices.RuntimeInformation 4.0.0'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile111', but the package does not contain any assembly references or content files that are compatible with that framework._

To workaround use project.json in the PCL.

That workaround doesn't work for VS 2013 or 2012.

Yeah, keeping this bug open to track how to fix that. We could drop a reference assembly or some sort of default implementation into lib/netstandard1.1.

Across all of our packages, if they have a ref with netstandard version 1.2 or lower, and no RID-less implementation, we should consider exposing a reference assembly or PlatformNotSupported assembly in lib/netstandard so that they can be used by profile-based portable w/ packages.config.

Any update on this?

No fix as of yet. Also adding @Priya91 to look at a potential lib/NETStandard1.1 implementation of RuntimeInformation that isn't platform specific.

I've had luck installing a netstandard1.1 library into a PCL with Profile111 by not installing dependencies (NETStandard.Library). Everything I need is in the Available Assemblies https://developer.xamarin.com/guides/cross-platform/advanced/available-assemblies/ ... I've also had luck so long as I don't target the entire NETStandard.Library and instead use fine-grained package refs to only what I need (and obviously then those packages are compat)

Looking into dropping windows implementation from runtimes to lib/netstandard1.1..

anything with this issue? i try to install via nuget autofac libraries with this message:
_Could not install package 'System.Runtime.InteropServices.RuntimeInformation 4.0.0'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile111', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author._

Would be nice to get it fixed soon

This work for me.
When i ran into that issue today. I had to install System.Runtime.InteropServices.RuntimeInformation before i install autofac.

  1. Install-package System.Runtime.InteropServices.RuntimeInformation
  2. install-package autofac
    That just work for me.

This is fixed in 1.1.0.. will be available in .net core 1.1 packages.

@okosodovictor that worked for me too, thanks a lot man!

Despite @Priya91's comment that it was fixed in 1.1.0, I had to follow @okosodovictor's suggestion before I got it working.

When using @okosodovictor 's suggestion make sure that the dependency behaviour is set to 'Highest' in nuget package manager.

@okosodovictor thank you very much, it worked to me

My error was on installing sqlite-net-pcl in a solution with xamarin

@okosodovictor Thank you man, this solved the issue while trying to install sqlite-net-pcl on xamarin studio on a xamarin.forms project.

I was trying to use this with Xamarin Native targeting Profile 111 in PCL project. I was trying to install sqlite-net-pcl and it failed. After installing System.Runtime.InteropServices.RuntimeInformation first and then install sqlite-net-pcl, it worked like charm. :) 馃憤 thanks @okosodovictor

Thanks @okosodovictor !! Like others here, I was installing sqlite-net-pcl for a Xamarin.Forms PCL project in Visual Studio 2017 and your suggestion worked perfectly.

@okosodovictor You are the real MVP.

Followed @okosodovictor advice, still could not install sqlite-net-pcl vs 2017.

Just kidding. Forgot that package management console applies to one package at a time.... this worked.

@kokomola your comment was deleted as a violation of the .NET Foundation Code of Conduct (adopted by CoreFX repo) as it was insulting/derogatory. You may consider this an official warning.

Was this page helpful?
0 / 5 - 0 ratings