Adding to PackageIndex all of the information about our release from 6.0 and fixing packages that needed placeholders#27385
Conversation
|
can you PR this to master first instead of release/2.1? |
| <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform"> | ||
| <Version>$(UAPPackageVersion)</Version> | ||
| </PackageReference> | ||
| <PackageReference Include="System.Reflection.Emit"> |
There was a problem hiding this comment.
Please add a comment around these additions and their purpose.
| netcoreapp2.0; | ||
| uap10.0.16299-Windows_NT; | ||
| uap10.0.16299aot-Windows_NT; | ||
| uapaot-Windows_NT; |
There was a problem hiding this comment.
Following the netcoreapp2.0 pattern perhaps you should remove the version-less ones into BuildConfigurations.
There was a problem hiding this comment.
sounds good, I'll do that.
| <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" /> | ||
| <PropertyGroup> | ||
| <ProjectGuid>{7DF3C428-AAD6-41C7-98E6-6CACFD5C391E}</ProjectGuid> | ||
| <PackageTargetFramework>netstandard2.0;uap10.0.16299</PackageTargetFramework> |
There was a problem hiding this comment.
Shouldn't the NS2.0 version apply or are we still missing a NuGet.Frameworks update?
There was a problem hiding this comment.
I believe we are still missing an update of the mappings.
There was a problem hiding this comment.
I would expect this mapping to exist as well.
That was the original idea, but because we have turned off all of the uap build in there, it was impossible to get the right validation since the builds were incomplete. |
| <_packageRID Condition="'$(PortableBuild)' == 'true'">$(_portableOS)-$(ArchGroup)</_packageRID> | ||
| <_packageRID Condition="'$(TargetGroup)' == 'uap'">win10-$(ArchGroup)</_packageRID> | ||
| <_packageRID Condition="'$(TargetGroup)' == 'uapaot'">win10-$(ArchGroup)-aot</_packageRID> | ||
| <_packageRID Condition="$(TargetGroup.StartsWith('uap'))">win10-$(ArchGroup)</_packageRID> |
There was a problem hiding this comment.
Nevermind I see the other aot configurations.
| @@ -811,11 +826,13 @@ | |||
| "4.2.1.0": "4.5.0" | |||
| } | |||
| }, | |||
| /*The shim of System.ComponentModel.Composition shipped on netcoreapp2.0 and uap6.0 and we now have an implementation | |||
There was a problem hiding this comment.
Would you mind fixing this while you are in here.
| "InboxOn": { | ||
| "monoandroid10": "Any", | ||
| "monotouch10": "Any", | ||
| "netcoreapp2.0": "Any", |
There was a problem hiding this comment.
You can remove the comment now.
…6.0 and fixing packages that needed placeholders
7ef488d to
8c885ba
Compare
|
@weshaggard & @ericstj do you mind taking another peak at this before merging? |
| System.Security.Principal.Windows; | ||
| </Value> | ||
| </ValidatePackageSuppression> | ||
| <!-- Permit missing Inbox since we this used to be a shim and it is now OOB --> |
There was a problem hiding this comment.
typo: since we this -> since this
| System.Private.Reflection.Metadata.Ecma335; | ||
| </Value> | ||
| </ValidatePackageSuppression> | ||
| <!-- Permit missing Inbox since we this used to be a shim and it is now OOB --> |
There was a problem hiding this comment.
typo: since we this -> since this
| <PropertyGroup> | ||
| <PackageConfigurations> | ||
| netstandard; | ||
| netstandard-Windows_NT; |
There was a problem hiding this comment.
Why do we need this netstandard-Windows_NT configuration?
There was a problem hiding this comment.
Because since we harvest a Windows specific netstandard1.3, then package validation will complain given that the compile asset resolved for UAP6.0 (the netstandard2.0 ref) will have a higher assembly version than the resolved implementation for UAP6.0 (the windows specific netstandard1.3 implementation) because the runtime specific assets will be prefered over the non rid specific (lib/netstandard2.0) . This is required in order to pass package validation and in order to be consumed on UAP.
There was a problem hiding this comment.
@ericstj do you think adding the netstandard-Windows_NT configuration is better then remapping the harvested location to put the NS13 asset in the lib instead of the windows RID. I suppose there is a chance that remapping the path might actually cause breaks but it would depend on the actual package.
There was a problem hiding this comment.
That ns1.3 asset is a windows specific implementation. If you started putting that in a RID-less folder you'd change the behavior for non-windows (previously it got a PNS exception).
If you go back and look at the history as to why this is targeting NETCoreapp-window_nt today instead of netstandard-windows_nt, it is because of this: joperezr@28097ca#diff-6b3a566cbc8f4a17c79fa82c0a0feafc. I needed to create a netcoreapp configuration to avoid an assembly cycle in the implementation of netcoreapp.
In that case the better fix here would be to move the netcoreapp-* configurations into BuildConfigurations only (since their only difference from netstandard version will be referenced assemblies) and have a netstandard-windows_NT version in the package.
| <PropertyGroup> | ||
| <PackageConfigurations> | ||
| netstandard; | ||
| netstandard-Windows_NT; |
There was a problem hiding this comment.
Why do we need this configuration?
| <PropertyGroup> | ||
| <PackageConfigurations> | ||
| netstandard; | ||
| netstandard-Windows_NT; |
There was a problem hiding this comment.
Why is this needed? In general I like to avoid RID netstandard configurations.
There was a problem hiding this comment.
I agree, but as explained above, this is required because we are harvesting a windows specific netstandard1.3 implementation for this package, which will be prefered over the lib/netstandard2.0 implementation for UAP.
There was a problem hiding this comment.
@weshaggard why do you want to avoid RID-netstandard configurations? What if we want to share a windows implementation between netcoreapp and UAP? That's the reason why those old harvested assets existed that were RID-specific and targeted netstandard.
There was a problem hiding this comment.
Maybe it is the purity in me speaking but I just don't like mixing netstandard library assets, which should be simple and free (mostly) of any OS specific code, with a RID. While I think there might be exceptions I would generally push for keeping RID specific assets targeting a concrete framework.
There was a problem hiding this comment.
There is nothing impure about having a RID + netstandard assets. Consider that the netstandard version targeted by the assembly represents the managed API needed by that assembly and the RID represents the platform API/behavior. It's actually more pure to have the assembly be win+netstandard since that's technically all it depends on. Making it win+UAP / win+netcoreapp implies it depends on something specific to those TFMs which at least the package asset does not.
There was a problem hiding this comment.
By purity I'm thinking about netstandard being pure IL and no pinvokes, which is where I would like most libraries to live. I know that isn't a reality but it is my ideal world. I agree using a combination of netstandard+RID can be useful in some scenarios but it also adds some risk as the native dependencies may or may not work on any netstandard supported platform. I guess that is true for all assets that go under a RID and I've never really liked how "undefined" RID's are which also leads me to not liking these. At any rate netstandard+RID is a tool and we should use it if necessary but that doesn't make me like it :)
|
@joperezr we are going to be merging master into release/2.1 later this week. It might be worth waiting on this until after that otherwise I expect the merge is going to be a little challenging. |
|
sounds good, I'll wait for the merge from master and then I'll merge this. |
|
Is this making progress? 9 days ago we said "later this week", but seems like there hasn't been any activity recently. This is blocking a buildtools uptake which is blocking some infrastructure work. |
|
yup already did that. This work has been now moved to master and merged so I'm closing this PR now. |
Fixes #27100
After shipping UAP 6.0 we didn't update the package index with this data so package validation has not been testing for breaks on packages that we will soon release. These changes include updating said index and reacting to the validation errors.
cc: @weshaggard @ericstj @joshfree