Can I build an “old school” PCL with DNX/DNU?

2019-03-17 03:19发布

问题:

In Noda Time 1.3.1, our .csproj file referred to Profile 328 and our .nuspec file put the results in

lib\portable-net4+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1+XamariniOS1

For Noda Time 2.0, I've moved everything over to DNX/DNU (soon to be dotnet cli, of course). However, we now want to build a regularly-updated package containing the latest time zone information from IANA. We'll build one version of that with a dependency on Noda Time 1.3.1, and another version with a dependency on Noda Time 2.0.0.

I would like to do all of this still within DNX/DNU, but it's unclear to me whether there's any way of telling DNX/DNU about this target framework. Note that I want to make this available to all current users of 1.3.1, and it also depends on 1.3.1, so I believe the set of target frameworks basically needs to be identical.

I've tried frameworks of:

  • portable-net40+sl5+win8+wpa81+wp8 (which I expected to have the best chance of working based on the Nuget documentation)
  • portable-net4+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1+XamariniOS1
  • Profile328

In every case, dnu restore shows an error of this form:

"portable-net40+sl5+win8+wpa81+wp8" is an unsupported framework.

I have a horrible suspicion that this basically isn't a supported use case, and that I'll need to stick to a regular csproj file for this particular part, but I thought it worth asking to see if I'm missing something.

回答1:

There's been some issues with Xamarin frameworks in the past, but try doing something like this;

https://github.com/AutoMapper/AutoMapper/blob/93f276fea36dedb2efd861096f881667af880d58/src/AutoMapper/project.json

See if this works:

{
  "frameworks": {
    ".NETPortable,Version=v4.0,Profile=Profile328": {
      "frameworkAssemblies": {
        ...
      }
    }
  }
}