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

Improve RID and publish UX #26446

Open
richlander opened this issue Jul 6, 2022 · 9 comments
Open

Improve RID and publish UX #26446

richlander opened this issue Jul 6, 2022 · 9 comments
Assignees
Labels
Area-NetSDK untriaged Request triage from a team member

Comments

@richlander
Copy link
Member

richlander commented Jul 6, 2022

I've been defining several experiences that are intended to improve Runtime Identifier (RID) and/or publish experiences. It makes sense to catalog those all in one place since its easy (including for me) to lose track of them.

Where is this all heading? There are two primary goals:

  • Better differentiate build and publish and use them to better support common developer workflows. There are properties that you cannot put in project files today because they won't do the right thing with either build or publish since there is no good way to conditionalize them.
  • Reduce the degree to which developers have to use the RID syntax and the -r argument while at the same time runtime-specific apps are the best option in many cases.
@dotnet-issue-labeler dotnet-issue-labeler bot added Area-NetSDK untriaged Request triage from a team member labels Jul 6, 2022
@nagilson
Copy link
Member

Will be investigating these now; I've created a thread where you can track my status on implementing all of these improvements: #26503

@agocke
Copy link
Member

agocke commented Jul 16, 2022

I'd suggest a few more items for this:

  1. Add some sort of portable RID. I think this could map to the any RID. This should also disable the apphost (UseAppHost=false).
  2. Hook this setting into the VS publish dialog. Right now "portable" is selected by default, but it creates an AppHost and sets <Platform>Any CPU</Platform>, which is meaningless.

@agocke
Copy link
Member

agocke commented Jul 16, 2022

fyi @richlander

@richlander
Copy link
Member Author

richlander commented Jul 17, 2022

I was thinking that maybe RuntimeSpecific=false could be the answer to point 1. Or put another way, I don't think a RID should be the gesture. One of my underlying goals (across multiple features I've been working on) is to make specifying RIDs directly less common. They are confusing, even for folks that define them.

Separately, any doesn't quite do the right thing, at least per my experiments with it. I did that because @vitek-karas told that "any doesn't do what you think" and the experiments seemed to prove that out. My observation was that any resulted in less not more RID-specific NuGet assets restored/in my bin folder. I didn't pursue why. Vitek would have more insight into why.

I've already started talking to the VS Publish folks. I'll setup a meeting for that so we can make some good decisions.

@DamianEdwards
Copy link
Member

Any timeline goals for this? Based on my experiments so far, these changes would be hugely beneficial to the UX.

@richlander
Copy link
Member Author

Some combination of 7.0.100 and 7.0.200.

I feel your pain.

@nagilson
Copy link
Member

nagilson commented Jul 20, 2022

@DamianEdwards The implicit RID stuff is about to be under wraps once I fix the fact that it's breaking RID agnostic projects. It might require changes to MSBuild as well and I'm new to that, so it's been a bottleneck. I agree it's very important!

@richlander
Copy link
Member Author

@DamianEdwards If you've got a preferred ordering of what's left, we'd be very interested in that.

@DamianEdwards
Copy link
Member

DamianEdwards commented Jul 20, 2022

My preferred ordering:

  1. Implicit RID (default to current platform RID)
  2. PublishSelfContained
  3. The rest

That would put us in a place where a project can default its publish behavior to practically any combination of configuration=Release, self-contained (for current RID), trimmed, single-file, etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-NetSDK untriaged Request triage from a team member
Projects
None yet
Development

No branches or pull requests

5 participants
@DamianEdwards @agocke @richlander @nagilson and others