Skip to content

Support the Microsoft.AspNetCore.App shared runtime in source-build #375

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

Closed
natemcmaster opened this issue Mar 21, 2018 · 13 comments
Closed
Assignees
Labels
area-additional-repos Adding additional contributing repos

Comments

@natemcmaster
Copy link

natemcmaster commented Mar 21, 2018

The Microsoft.AspNetCore.App shared runtime (first-released in 2.1) and many of dependencies are not currently supported in source-build. To enable source-build on this shared runtime, we expect the following changes will need to be addressed:

@tmds
Copy link
Member

tmds commented Apr 17, 2018

@natemcmaster I'm wondering about something.
Suppose a user references 'Microsoft.AspNetCore.App' version '2.1.0' in his csproj file.
And at some point security release '2.1.1' is made.

With the Microsoft binaries, the fixed 'Microsoft.AspNetCore.App' is deployed to the production server. This means all production apps use the patched version, even when they are targeting an older version ('2.1.0' in this case). Is that correct?

For source-build binaries, the plan for 2.1 is to fetch this package from nuget.org and are deployed with the application. So to get the new bits, the user will need to re-build his application. afaik nuget doesn't understand this is a patch release, so it is also the user's responsibility to manually update the version number in the csproj file. Is that correct? If the user would have specified 2.1.* as a version dependency, would that be an appropriate way to always use the latest patch version?

CC @omajid

@natemcmaster
Copy link
Author

natemcmaster commented Apr 17, 2018 via email

@tmds
Copy link
Member

tmds commented May 18, 2018

@natemcmaster I noticed rc1 templates no longer have a version for the Microsoft.AspNetCore.App package:

<PackageReference Include="Microsoft.AspNetCore.App" />

I guess the Microsoft.NET.Sdk.Web sdk fills in what it knows to be the latest version? So that will also work on source-build? And it means that source-build users won't have to manually patch their csproj files (i.e. building with a more recent sdk is enough)?

@natemcmaster
Copy link
Author

Correct, users should not need to patch their .csproj file. Our intention here is to follow the same behavior of the implicit reference to Microsoft.NETCore.App. The web sdk will pick the version as follows

  • SelfContained == false -> reference version is '2.1.0'. This version is a minimum shared runtime version, so we won't update this. The host policy will auto rollforward to newer 2.1.x patches when they are installed.
  • SelfContained == true -> reference the latest 2.1.x version. cref Add proposal for self-contained roll forward designs#36

See https://github.com/aspnet/websdk/blob/0e78949b6c03efc8c257643e4913f4a22e52b653/src/Web/Microsoft.NET.Sdk.Web.Targets/Sdk.DefaultItems.targets#L14-L33 for more details.

@tmds
Copy link
Member

tmds commented May 18, 2018

SelfContained == false -> reference version is '2.1.0'. This version is a minimum shared runtime version, so we won't update this. The host policy will auto rollforward to newer 2.1.x patches when they are installed.

If this doesn't get updated, doesn't that mean source-build will continue to get the 2.1.0 from nuget.org even when patches are available?

@tmds
Copy link
Member

tmds commented May 18, 2018

For Microsoft.NETCore.App that's fine, for not self-contained, it runs on what the system has. For source-build there is no system Microsoft.AspNetCore.App, so it will always select the 2.1.0 from nuget.org.
Perhaps it makes sense in the case where you are overriding MicrosoftNETPlatformLibrary for source-build, to also set TargetLatestAspNetCoreRuntimePatch to true?

@natemcmaster
Copy link
Author

natemcmaster commented May 18, 2018 via email

@tmds
Copy link
Member

tmds commented May 22, 2018

We can probably set TargetLatestAspNetCoreRuntimePatch in the sdk based on similar conditions that end-up setting MicrosoftNETPlatformLibrary?

That will only fix the issue when the user is always using the latest sdk. If the sdk is fixed in global.json for compat reasons, he is still using a possibly out-dated version of ASP.NET Core.

@tmds
Copy link
Member

tmds commented May 22, 2018

That will only fix the issue when the user is always using the latest sdk. If the sdk is fixed in global.json for compat reasons, he is still using a possibly out-dated version of ASP.NET Core.

I was wondering how dotnet/designs#36 might solve this, but it is suffering from the same problem:

As proposed, the .NET Core SDK targets will have a hard-coded list of the latest patches for each minor .NET Core release. This couples SDK releases with runtime patches and means we would have to release an updated SDK each time there was a new runtime patch if we want self-contained apps to roll forward to it-- and that developers would need to install the new SDK in order to roll forward to the latest patch.

@natemcmaster
Copy link
Author

FYI - we are planning on addressing this in 3.0.

@dagood dagood added the area-additional-repos Adding additional contributing repos label Aug 10, 2018
Tragetaschen pushed a commit to Tragetaschen/meta-aspnet that referenced this issue Apr 2, 2019
The source-build infrastructure currently does not support Microsoft.AspNetCore.App.
See dotnet/source-build#375
@JunTaoLuo
Copy link

@crummel I suppose we can close this now that #1144 is in?

@natemcmaster
Copy link
Author

Nice work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-additional-repos Adding additional contributing repos
Projects
None yet
Development

No branches or pull requests

5 participants