Skip to content
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

Utilize .NET SDK workloads infrastructure to generate runtime pack msis for Visual Studio #46427

Open
1 task done
marcpopMSFT opened this issue Feb 3, 2023 · 13 comments
Open
1 task done
Labels
area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework task

Comments

@marcpopMSFT
Copy link
Member

Is there an existing issue for this?

  • I have searched the existing issues

Is your feature request related to a problem? Please describe the problem.

Today customers targeting self-contained applications download the runtime packs at build time. This prevents offline scenarios with Visual Studio. This also impacts internal customers that install pre-release builds.

Describe the solution you'd like

Expand the existing runtime pack infrastructure used in the runtime repo today to the aspnet and windows desktop runtime packs.

Drawbacks are that this could impact servicing codeflow in the future. The recommendation is to only produce these for windows versions that VS ships on (the idea being we still download for cross-compiling but for the RID that matches the OS, we can provide that to VS).

See email or ask marcpop for more details

Additional context

No response

@marcpopMSFT
Copy link
Member Author

WD version is here. I'd recommend coordinating to do both at the same time. There's a monday sync on workloads if someone wants to come learn more.

@dougbu dougbu added the area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework label Feb 3, 2023
@dougbu
Copy link
Member

dougbu commented Feb 3, 2023

Not sure who on our team has much experience w/ workloads (I have none) and I doubt many here have used the "workloads infrastructure" mentioned here. @joperezr do you have relevant context or suggestions on who to contact❔

@joperezr
Copy link
Member

joperezr commented Feb 3, 2023

I'm not very familiar with workloads, but I know that @terrajobst has been looking into these lately in a context of a different project so he may be able to share more info or at least points us to someone that can help.

@terrajobst
Copy link
Member

My impression from talking to @timheuer @baronfel @dsplaisted was that workloads are currently tailored to the mobile workloads we recently added (iOS and Android in particlar). Conceptually, they are meant to represent optional components for .NET which allows us to ship a core SDK that doesn't need to be huge while also having the smarts in the tools to know when they are needed and missing and prompt the user to install them (e.g. by giving actionable errors on the CLI or by launching the acquisition experience inside the IDE).

My understanding is that workloads are really useful when you need to ship tooling (custom MSBuild SDKs, tasks, and targets), which makes sense for ASP.NET Core.

I believe originally we had a goal to provide WinForms/WPF and ASP.NET Core as workloads too but we cut it because (1) we already ship them and (2) we needed to focus on the mobile experiences. It sounds like @marcpopMSFT is suggesting we're doing them for .NET 8?

@dsplaisted
Copy link
Member

Currently, to build a self-contained app, the correct runtime packs need to be downloaded from NuGet feeds. With internal builds of VS, this can be a pain, as the runtime packs may not be released publicly, so you have to find out what NuGet feeds you need to set up to access the runtime packs.

The workload infrastructure would allow us to include the runtime packs as optional installs in Visual Studio, which would make dogfooding and internal testing a lot easier. We already do this for the iOS and Android runtime packs, so it works and we think it would be a good idea to do it for the rest.

@marcpopMSFT
Copy link
Member Author

Besides internal builds, I think this would finally enable offline mode for self-contained.

To Immo's original question, this is not a proposal to make aspnet an optional workload. This is for just the runtime packs themselves which today are always downloaded from nuget on the fly and to only do it for the current configuration within VS (ie we don't need to pre-download every runtime pack, just the local matching windows RID).

@terrajobst
Copy link
Member

@dsplaisted why couldn't we publish the transport packages to nuget.org? My understanding is that unless you use an SDK that points to them or people manually override properties in their project file nothing will "pull" on these packages / the user won't be prompted to install them.

@mkArtakMSFT
Copy link
Member

Thanks @marcpopMSFT. How urgent do you think this is? Are there any deadlines that we need to handle this before?

@mkArtakMSFT mkArtakMSFT added this to the Infrastructure milestone Feb 7, 2023
@dsplaisted
Copy link
Member

@dsplaisted why couldn't we publish the transport packages to nuget.org? My understanding is that unless you use an SDK that points to them or people manually override properties in their project file nothing will "pull" on these packages / the user won't be prompted to install them.

There are times when an SDK is inserted into internal builds of Visual Studio (because we want to keep it as up-to-date as possible), but we can't push the corresponding runtime packs publicly yet, as that version of the runtime hasn't been released yet.

@marcpopMSFT
Copy link
Member Author

Thanks @marcpopMSFT. How urgent do you think this is? Are there any deadlines that we need to handle this before?

We've lived without this for many years. We usually get a handful of reports every few months usually the weeks before a VS release. For example, we've checked in a final SDK version for 17.5 already but the runtime packs won't be available on nuget.org until next week. I suspect I'll get a few reports in the next week.

Internal customers can setup the private feed (a moderate pain) or set the RuntimeFrameworkVersion to an older version (easiest but can be forgotten) or override the KnownRuntimePack version (complicated and can be forgotten).

There is no deadline for doing this but it is a nice to have quality of life improvement for internal folks (or offline scenarios).

@MSLukeWest
Copy link

MSLukeWest commented Feb 10, 2023

+1 to making this happen. It would be useful for internal test pipelines that run using local machine accounts to be able to have these packages downloaded by the VS installer. Bonus points if you maintain two components; one for 6.0 and one for 7.0.

@spadapet
Copy link

spadapet commented Aug 9, 2023

Another +1 to make this happen. Similar to what @MSLukeWest mentioned, we have an internal test that runs against the latest main builds and creates a self-contained project. The test can fail for many days with these errors:

image

The test won't have access to any internal dotnet feeds from the lab machine. So it needs a workload installed locally.

@marcpopMSFT
Copy link
Member Author

@danmoseley This comes up most months as feedback from VS and moreso near the end of the release. Might be nice to explore this for 9 if there is capacity.

@dotnet-policy-service dotnet-policy-service bot added the pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun label Feb 6, 2024
@wtgodbe wtgodbe removed the pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun label Feb 6, 2024
@dotnet-policy-service dotnet-policy-service bot added the pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun label Feb 6, 2024
@wtgodbe wtgodbe removed the pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun label Feb 13, 2024
@dotnet dotnet deleted a comment from dotnet-policy-service bot Feb 13, 2024
@dotnet dotnet deleted a comment from dotnet-policy-service bot Feb 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework task
Projects
None yet
Development

No branches or pull requests

9 participants