Description
We want to help users avoid a pit of failure for builds that require authentication to access NuGet feeds and other resources that require authentication. Many tools use authentication in two ways - interactive and non-interactive flows. The dotnet
CLI today uses a non-interactive flow by default, which means that many user experiences follow this pattern
- user runs
dotnet build
- build fails due to missing authentication that requires user input
- user runs
dotnet build --interactive
- build detects it is interactive so prompts a user to open a browser to authenticate
- user follows prompts to authenticate
- build succeeds
We should be able to remove steps 2, 3, and 4 from that workflow by making --interactive
the default for user experiences in .NET, as long as there is a user in control. As always, a user should be able to specify --interactive false
or --no-interactive
to override our defaults.
We should also work with standalone MSBuild to determine when /interactive
should be the default for non-.NET-SDK users.
In addition, authentication workflows today require users to click links in their terminals, but more integrated experiences can open browsers and even silently authenticate if NuGet allows them to spawn dialogs, so we should enable that behavior as well in the core NuGet Credential Provider workflows.