Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
1350261
Initial dotnet sdk install CLI definition
dsplaisted Jul 9, 2025
413e698
Add SDK update command
dsplaisted Jul 14, 2025
61e48aa
Rename VersionOrChannel argument to just Channel
dsplaisted Jul 14, 2025
51ffe3d
Implement part of UI for install command
dsplaisted Jul 20, 2025
5834280
Add more installer UI
dsplaisted Jul 21, 2025
1bf3e57
UI improvements and add dnup shims for demo
dsplaisted Jul 21, 2025
225a5cf
More install experience updates
dsplaisted Jul 21, 2025
9f6340c
Add SdkInstallCommand code to dnup
dsplaisted Aug 15, 2025
eaffa94
Wire up sdk install command for dnup
dsplaisted Aug 15, 2025
4394b54
Add string resources to dnup project
dsplaisted Aug 19, 2025
37c42aa
Add initial installer interfaces for dnup
dsplaisted Aug 20, 2025
9f372f7
Add initial installer interfaces for dnup (#50379)
dsplaisted Aug 20, 2025
1641070
Start implementation of DotnetInstaller
dsplaisted Aug 21, 2025
0b39a6e
Add dnup solution filter and add Environment provider to project
dsplaisted Aug 21, 2025
e05b2ad
Switch to common implementation of finding dotnet on path
dsplaisted Aug 21, 2025
c78f198
Fix typo
dsplaisted Aug 21, 2025
e06b134
Add class for global.json contents
dsplaisted Aug 21, 2025
cd575a2
Rename class and more
dsplaisted Aug 21, 2025
3ac4015
Implement GetGlobalJsonInfo
dsplaisted Aug 21, 2025
6fcbe43
Remove try/catch for loading global.json
dsplaisted Aug 21, 2025
dd90109
Implement GetConfiguredInstallType and GetGlobalJsonInfo (#50408)
dsplaisted Aug 21, 2025
bd28700
Add more installer methods
dsplaisted Aug 21, 2025
8e2bdf9
Add calls to new methods
dsplaisted Aug 22, 2025
19f42c8
Initial ConfigureInstallType implementation
dsplaisted Aug 22, 2025
a559c31
Fix check for dotnet folder in PATH
dsplaisted Aug 22, 2025
3e29ba6
Add more methods to installer interface (#50475)
dsplaisted Aug 25, 2025
c0075f8
Add boilerplate types and interfaces to do installs
nagilson Aug 25, 2025
060a91b
Add base version class
nagilson Aug 25, 2025
a09f30f
Add dotnetVersion class for version parsing
nagilson Aug 26, 2025
a918d06
Add dotnetVersion class for version parsing (#50492)
nagilson Aug 26, 2025
3ad43e4
Add basic tests
nagilson Aug 26, 2025
ebcefb4
Add basic tests for dnup (#50497)
nagilson Aug 26, 2025
ee2a6c6
Replace SDKInstallType with InstallType
nagilson Aug 26, 2025
14a58cb
Add Base Interface for Install
nagilson Aug 26, 2025
c1dfcb2
Add Base Interface for Install (#50498)
nagilson Aug 26, 2025
9c19c6b
Add the isolated classes for each responsibility of install
nagilson Aug 26, 2025
6887043
Add the isolated classes for each responsibility of install (#50500)
nagilson Aug 26, 2025
c97834e
fill in controller with correct data structure model
nagilson Aug 26, 2025
d3cb10f
use some actual version parsing
nagilson Aug 26, 2025
69b9821
add more context into what to implement for future me or others
nagilson Aug 26, 2025
fe227df
Add Interfaces for .NET Installer Data Models (#50503)
nagilson Aug 26, 2025
396db6f
prepare code from dnvm
nagilson Aug 26, 2025
065a05d
Prepare some install logic from dnup (#50504)
nagilson Aug 26, 2025
e4b7e42
Migrate to .NET Archive Libraries
nagilson Sep 3, 2025
2f458c9
Implement Extraction Logic
nagilson Sep 3, 2025
52c1191
Implement DNUP Extraction logic (#50626)
nagilson Sep 3, 2025
93bc61f
Implement manifest parsing and vscode setting folder for build button
nagilson Sep 4, 2025
a213377
Implement manifest parsing (#50642)
nagilson Sep 4, 2025
00ff09d
Installing .NET works e2e
nagilson Sep 4, 2025
2640948
Installing .NET works e2e with dnup (#50645)
nagilson Sep 4, 2025
3fcf146
Show progress correctly
nagilson Sep 4, 2025
0a668b4
fix end message
nagilson Sep 4, 2025
df9fde0
find available SDKs
nagilson Sep 4, 2025
2bd4154
Working Progress indicators (#50647)
nagilson Sep 4, 2025
716e6c2
Add update cadence method for manifest tracking
nagilson Sep 5, 2025
1c465ef
Add implementation of manifest methods
nagilson Sep 5, 2025
2da2e77
Extract + Install combined to one step
nagilson Sep 5, 2025
b35c6d8
Fix json aot serialization
nagilson Sep 5, 2025
7dfe03e
find existing versions + parse channels
nagilson Sep 5, 2025
e4f4fd0
find existing versions
nagilson Sep 5, 2025
dca4da2
Add tests for version parsing.
nagilson Sep 5, 2025
87eea7d
Correctly parse 9.0.1xx, and 9, and 9.0
nagilson Sep 5, 2025
1121152
Fix version parsing
nagilson Sep 5, 2025
f65bc4e
add lts sts schannel support. fix project.
nagilson Sep 5, 2025
681ab98
add preview support.
nagilson Sep 5, 2025
f7e399c
Add dnup manifest + channel parsing (#50665)
nagilson Sep 5, 2025
70a828f
Fix LTS STS Parsing
nagilson Sep 8, 2025
7535e7c
Fix LTS STS Parsing (#50688)
nagilson Sep 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@
<PackageVersion Include="runtime.linux-x64.Microsoft.NETCore.DotNetHostResolver" Version="$(MicrosoftNETCoreDotNetHostResolverPackageVersion)" />
<PackageVersion Include="runtime.osx-x64.Microsoft.NETCore.DotNetHostResolver" Version="$(MicrosoftNETCoreDotNetHostResolverPackageVersion)" />
<PackageVersion Include="StyleCop.Analyzers" Version="$(StyleCopAnalyzersPackageVersion)" />
<PackageVersion Include="Spectre.Console" Version="0.48.0" />
<PackageVersion Include="System.CodeDom" Version="$(SystemCodeDomPackageVersion)" />
<PackageVersion Include="System.CommandLine" Version="$(SystemCommandLineVersion)" />
<PackageVersion Include="System.CommandLine.NamingConventionBinder" Version="$(SystemCommandLineNamingConventionBinderVersion)" />
Expand Down
8 changes: 8 additions & 0 deletions dnup.slnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"solution": {
"path": "sdk.slnx",
"projects": [
"src\\Installer\\dnup\\dnup.csproj",
]
}
}
5 changes: 4 additions & 1 deletion sdk.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
<File Path="eng/dogfood.cmd" />
<File Path="eng/dogfood.sh" />
<File Path="eng/Versions.props" />
<File Path="eng/Version.Details.props" />
</Folder>
<Folder Name="/Solution Items/">
<File Path=".editorconfig" />
Expand Down Expand Up @@ -86,6 +85,9 @@
<Project Path="src/Containers/Microsoft.NET.Build.Containers/Microsoft.NET.Build.Containers.csproj" />
<Project Path="src/Containers/packaging/package.csproj" />
</Folder>
<Folder Name="/src/Installer/">
<Project Path="src/Installer/dnup/dnup.csproj" />
</Folder>
<Folder Name="/src/Layout/">
<Project Path="src/Layout/finalizer/finalizer.csproj" />
<Project Path="src/Layout/pkg/dotnet-sdk.proj" Type="C#" />
Expand Down Expand Up @@ -292,6 +294,7 @@
<Project Path="test/dotnet-new.IntegrationTests/dotnet-new.IntegrationTests.csproj" />
<Project Path="test/dotnet-watch.Tests/dotnet-watch.Tests.csproj" />
<Project Path="test/dotnet.Tests/dotnet.Tests.csproj" />
<Project Path="test/dnup.Tests/dnup.Tests.csproj" />
<Project Path="test/EndToEnd.Tests/EndToEnd.Tests.csproj" />
<Project Path="test/HelixTasks/HelixTasks.csproj" />
<Project Path="test/Microsoft.AspNetCore.Watch.BrowserRefresh.Tests/Microsoft.AspNetCore.Watch.BrowserRefresh.Tests.csproj" />
Expand Down
2 changes: 2 additions & 0 deletions src/Cli/dotnet/CliUsage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ internal static class CliUsage
clean {CliCommandStrings.CleanDefinition}
format {CliCommandStrings.FormatDefinition}
help {CliCommandStrings.HelpDefinition}
install Installs the .NET SDK
msbuild {CliCommandStrings.MsBuildDefinition}
new {CliCommandStrings.NewDefinition}
nuget {CliCommandStrings.NugetDefinition}
Expand All @@ -57,6 +58,7 @@ internal static class CliUsage
store {CliCommandStrings.StoreDefinition}
test {CliCommandStrings.TestDefinition}
tool {CliCommandStrings.ToolDefinition}
update Updates the .NET SDK
vstest {CliCommandStrings.VsTestDefinition}
workload {CliCommandStrings.WorkloadDefinition}

Expand Down
6 changes: 5 additions & 1 deletion src/Cli/dotnet/Commands/Sdk/SdkCommandParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

using System.CommandLine;
using Microsoft.DotNet.Cli.Commands.Sdk.Check;
//using Microsoft.DotNet.Cli.Commands.Sdk.Install;
using Microsoft.DotNet.Cli.Commands.Sdk.Update;
using Microsoft.DotNet.Cli.Extensions;

namespace Microsoft.DotNet.Cli.Commands.Sdk;
Expand All @@ -24,8 +26,10 @@ private static Command ConstructCommand()
{
DocumentedCommand command = new("sdk", DocsLink, CliCommandStrings.SdkAppFullName);
command.Subcommands.Add(SdkCheckCommandParser.GetCommand());
//command.Subcommands.Add(SdkInstallCommandParser.GetSdkInstallCommand());
command.Subcommands.Add(SdkUpdateCommandParser.GetSdkUpdateCommand());

command.SetAction((parseResult) => parseResult.HandleMissingCommand());
//command.SetAction((parseResult) => parseResult.HandleMissingCommand());

return command;
}
Expand Down
55 changes: 55 additions & 0 deletions src/Cli/dotnet/Commands/Sdk/Update/SdkUpdateCommandParser.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.CommandLine;
using Microsoft.CodeAnalysis.CSharp.Syntax;

namespace Microsoft.DotNet.Cli.Commands.Sdk.Update;

internal static class SdkUpdateCommandParser
{

public static readonly Option<bool> UpdateAllOption = new("--all")
{
Description = "Update all installed SDKs",
Arity = ArgumentArity.Zero
};

public static readonly Option<bool> UpdateGlobalJsonOption = new("--update-global-json")
{
Description = "Update the sdk version in applicable global.json files to the updated SDK version",
Arity = ArgumentArity.Zero
};

public static readonly Option<bool> InteractiveOption = CommonOptions.InteractiveOption();

private static readonly Command SdkUpdateCommand = ConstructCommand();

public static Command GetSdkUpdateCommand()
{
return SdkUpdateCommand;
}

// Trying to use the same command object for both "dotnet udpate" and "dotnet sdk update" causes an InvalidOperationException
// So we create a separate instance for each case
private static readonly Command RootUpdateCommand = ConstructCommand();

public static Command GetRootUpdateCommand()
{
return RootUpdateCommand;
}

private static Command ConstructCommand()
{
Command command = new("update", "Updates the .NET SDK");

command.Options.Add(UpdateAllOption);
command.Options.Add(UpdateGlobalJsonOption);

command.Options.Add(InteractiveOption);

command.SetAction(parseResult => 0);

return command;
}
}
4 changes: 4 additions & 0 deletions src/Cli/dotnet/Parser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
using Microsoft.DotNet.Cli.Commands.Run;
using Microsoft.DotNet.Cli.Commands.Run.Api;
using Microsoft.DotNet.Cli.Commands.Sdk;
//using Microsoft.DotNet.Cli.Commands.Sdk.Install;
using Microsoft.DotNet.Cli.Commands.Sdk.Update;
using Microsoft.DotNet.Cli.Commands.Solution;
using Microsoft.DotNet.Cli.Commands.Store;
using Microsoft.DotNet.Cli.Commands.Test;
Expand Down Expand Up @@ -87,6 +89,8 @@ public static class Parser
VSTestCommandParser.GetCommand(),
HelpCommandParser.GetCommand(),
SdkCommandParser.GetCommand(),
//SdkInstallCommandParser.GetRootInstallCommand(),
SdkUpdateCommandParser.GetRootUpdateCommand(),
InstallSuccessCommand,
WorkloadCommandParser.GetCommand(),
new System.CommandLine.StaticCompletions.CompletionsCommand()
Expand Down
1 change: 1 addition & 0 deletions src/Cli/dotnet/dotnet.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
<PackageReference Include="Microsoft.TemplateEngine.Orchestrator.RunnableProjects" />
<PackageReference Include="System.CommandLine" />
<PackageReference Include="Microsoft.Deployment.DotNet.Releases" />
<PackageReference Include="Spectre.Console" />
<PackageReference Include="System.ServiceProcess.ServiceController" />
<PackageReference Include="Microsoft.VisualStudio.Setup.Configuration.Interop" PrivateAssets="All" ExcludeAssets="Runtime" Condition="'$(DotNetBuildSourceOnly)' != 'true'" />
<PackageReference Include="Microsoft.Windows.CsWin32" IncludeAssets="all" Condition="'$(DotNetBuildSourceOnly)' != 'true'" />
Expand Down
2 changes: 2 additions & 0 deletions src/Installer/dnup/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Override the root .gitignore to NOT ignore the .vscode folder
!.vscode/
30 changes: 30 additions & 0 deletions src/Installer/dnup/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch dnup",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/../../../artifacts/bin/dnup/Debug/net10.0/dnup.dll",
"args": "${input:commandLineArgs}",
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"requireExactSource": false
}
],
"inputs": [
{
"id": "commandLineArgs",
"type": "promptString",
"description": "Command line arguments",
"default": ""
}
]
}
18 changes: 18 additions & 0 deletions src/Installer/dnup/.vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"dotnet.defaultSolution": "dnup.csproj",
"csharp.debug.console": "externalTerminal",
"editor.formatOnSave": true,
"omnisharp.enableRoslynAnalyzers": true,
"omnisharp.useModernNet": true,
"dotnetAcquisitionExtension.existingDotnetPath": [
{
"extensionId": "ms-dotnettools.csharp",
"path": "C:\\Program Files\\dotnet\\dotnet.exe"
}
],
"launch": {
"configurations": [],
"compounds": []
},
"omnisharp.defaultLaunchSolution": "dnup.csproj"
}
56 changes: 56 additions & 0 deletions src/Installer/dnup/.vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/dnup.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"${input:buildArgs}"
],
"problemMatcher": "$msCompile",
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/dnup.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
"${input:buildArgs}"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/dnup.csproj",
"${input:buildArgs}"
],
"problemMatcher": "$msCompile"
}
],
"inputs": [
{
"id": "buildArgs",
"type": "promptString",
"description": "Additional build arguments",
"default": ""
}
]
}
Loading
Loading