wonea
wonea

Reputation: 4969

Xamarin Forms UWP failing to reference NuGet package System references

I'm trying to add a self made NuGet package, built automatically with Visual Studio 2017 to a UWP Xamarin Forms project.

NuGet Package Structure

However when I try add the package to the UWP package (in VS2017 package manager) it fails.

Restoring packages for C:\Development\MyMobile\JobApp\JobApp\JobApp.UWP\project.json...
System.Threading.ThreadPool 4.3.0 provides a compile-time reference assembly for System.Threading.ThreadPool on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm.
System.Threading.Thread 4.3.0 provides a compile-time reference assembly for System.Threading.Thread on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm.
System.Diagnostics.Process 4.3.0 provides a compile-time reference assembly for System.Diagnostics.Process on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm.
One or more packages are incompatible with UAP,Version=v10.0 (win10-arm).
System.Threading.ThreadPool 4.3.0 provides a compile-time reference assembly for System.Threading.ThreadPool on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm-aot.
System.Threading.Thread 4.3.0 provides a compile-time reference assembly for System.Threading.Thread on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm-aot.
System.Diagnostics.Process 4.3.0 provides a compile-time reference assembly for System.Diagnostics.Process on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm-aot.
One or more packages are incompatible with UAP,Version=v10.0 (win10-arm-aot).
System.Threading.ThreadPool 4.3.0 provides a compile-time reference assembly for System.Threading.ThreadPool on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64.
System.Threading.Thread 4.3.0 provides a compile-time reference assembly for System.Threading.Thread on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64.
System.Diagnostics.Process 4.3.0 provides a compile-time reference assembly for System.Diagnostics.Process on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64.
One or more packages are incompatible with UAP,Version=v10.0 (win10-x64).
System.Threading.ThreadPool 4.3.0 provides a compile-time reference assembly for System.Threading.ThreadPool on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64-aot.
System.Threading.Thread 4.3.0 provides a compile-time reference assembly for System.Threading.Thread on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64-aot.
System.Diagnostics.Process 4.3.0 provides a compile-time reference assembly for System.Diagnostics.Process on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64-aot.
One or more packages are incompatible with UAP,Version=v10.0 (win10-x64-aot).
System.Threading.ThreadPool 4.3.0 provides a compile-time reference assembly for System.Threading.ThreadPool on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86.
System.Threading.Thread 4.3.0 provides a compile-time reference assembly for System.Threading.Thread on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86.
System.Diagnostics.Process 4.3.0 provides a compile-time reference assembly for System.Diagnostics.Process on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86.
One or more packages are incompatible with UAP,Version=v10.0 (win10-x86).
System.Threading.ThreadPool 4.3.0 provides a compile-time reference assembly for System.Threading.ThreadPool on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86-aot.
System.Threading.Thread 4.3.0 provides a compile-time reference assembly for System.Threading.Thread on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86-aot.
System.Diagnostics.Process 4.3.0 provides a compile-time reference assembly for System.Diagnostics.Process on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86-aot.
One or more packages are incompatible with UAP,Version=v10.0 (win10-x86-aot).
Package restore failed. Rolling back package changes for 'JobApp.UWP'.
Time Elapsed: 00:00:02.8217814
========== Finished ==========

I've edited project.json for the UWP project to try and adding in netstandard1.6 and System.* dependencies, but sadly didn't work.

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.3.3",
    "MvvmLight": "5.3.0",
    "Newtonsoft.Json": "10.0.2",
    "Xamarin.Forms": "2.3.4.231",
    "System.Threading": "4.3.0",
    "System.Runtime": "4.3.0",
    "System.Diagnostics.Process": "4.3.0",
    "System.Threading.Thread": "4.3.0",
    "System.Threading.ThreadPool": "4.3.0"
  },
  "frameworks": {
    "uap10.0": {
      "imports": "netstandard1.6"
    }
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

Why is UWP having problems with System.* references?

Here is the NuSpec for my package;

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
    <metadata>
        <id>MyCommon</id>
        <version>1.0.131</version>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <dependencies>
            <group targetFramework=".NETFramework4.6">
                <dependency id="Quartz" version="3.0.0-alpha2" exclude="Build,Analyzers" />
                <dependency id="ImageSharp" version="1.0.0-alpha5-00046" exclude="Build,Analyzers" />
                <dependency id="System.ComponentModel" version="4.3.0" exclude="Build,Analyzers" />
            </group>
            <group targetFramework=".NETStandard1.6">
                <dependency id="Quartz" version="3.0.0-alpha2" exclude="Build,Analyzers" />
                <dependency id="NETStandard.Library" version="1.6.1" exclude="Build,Analyzers" />
                <dependency id="ImageSharp" version="1.0.0-alpha5-00046" exclude="Build,Analyzers" />
                <dependency id="System.ComponentModel" version="4.3.0" exclude="Build,Analyzers" />
            </group>
        </dependencies>
    </metadata>
</package>

Upvotes: 1

Views: 455

Answers (1)

Nikola Prokopić
Nikola Prokopić

Reputation: 3476

Your NuGet package is referencing Quartz 3.0.0-alpha2, which references System.Threading.Thread and System.Threading.ThreadPool.

These two packages (System.Threading.Thread and System.Threading.ThreadPool) are not supported on Universal Windows Platform, at least not at this moment.

Here, Immo Landwerth (program manager on the .NET team) says:

  • UWP currently only supports .NET Standard 1.4
  • Our goal is to eventually extend UWP to also implement .NET Standard 2.0. Once that happens, UWP will also support Thread.

Here are some GitHub issues where you can read more about this topic:

Upvotes: 2

Related Questions