-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
System.Private.CoreLib designated as native in runtime pack #3730
Comments
The root cause is that CoreCLR puts it into the transport package that way, and Core-Setup doesn't second-guess it: There is also a The classification that ends up in |
S.P.Corelib is special in the way that it gets crossgenes in the coreclr repo (everything else is crossgened in the core-setup repo) - so it comes from coreclr as a RID specific file I assume... that might be the reason it's marked as native (since it kind of is). If the above is true - than I think it would be an OK solution to special case S.P.Corelib - it's already special cased in so many places (the host, the runtime, ...)... one more won't make a difference 😄 |
Core-Setup puts the crossgen'd CoreFX in |
@nguerrera are there any other SDK scenarios that would be impacted by changing this classification? |
Moved to 3.1 per dotnet/sdk#3109 (comment). |
@nguerrera, now that dotnet/sdk#3109 is complete without this issue, is there still benefit to having a Core-Setup-side classification workaround in 3.1? I'd like to move this to 5.0, and perhaps drive the fix into the CoreCLR nupkg structure rather than special-casing it in Core-Setup. /cc @dleeapho For context, it looks to me like this is what would be removed in SDK by implementing a workaround in Core-Setup: <Target Name="_ComputeManagedRuntimePackAssemblies" Returns="@(_ManagedRuntimePackAssembly)">
<ItemGroup>
<!-- Special case for System.Private.Corelib due to https://github.com/dotnet/core-setup/issues/7728 -->
<_ManagedRuntimePackAssembly Include="@(RuntimePackAsset)"
Condition="'%(RuntimePackAsset.AssetType)' == 'runtime'
or '%(RuntimePackAsset.Filename)' == 'System.Private.Corelib'" />
</ItemGroup>
</Target> |
Yes, removing that workaround would potentially speed things up in addition to making the code cleaner, but it is not urgent, and I think 5.0 would be fine. |
Seems like it would be possible to hack up an SDK to get numbers, but maybe more trouble than it's worth. Getting a scenario that shows perf issues might also be a challenge. Feels bad to defer a trivial change like this, but seems like the right thing to do vs. the bar. |
Looking at the code again, I doubt it will impact perf much. I was thinking it would remove a whole pass over the items but it will just remove that 'or' clause. |
Assigning to myself as I'm doing work with the shared framework creation at the moment. |
@jkoritzinsky is this still on track for 5.0? |
I don't think this will make 5.0 unless the MSI unwrapping comes in soon. I'll move this to 6.0. |
Steps to reproduce
dotnet new console
dotnet publish -r win-x64
Expected behavior
System.Private.Corelib is designated as a runtime asset
Actual behavior
System.Private.Corelib is designated as a native asset
Is there a reason for this? It is complicating my fix for dotnet/sdk#3109
The app works fine if I edit .deps.json to mark it as managed (runtime) asset, but I don't know if there are other consequences.
I'm not blocked on this as I can work around it, but it would be cleaner if System.Private.CoreLib were designated as managed if possible.
Environment data
@vitek-karas @dagood
The text was updated successfully, but these errors were encountered: