diff --git a/DotNetSolutionTools.CLI/Commands/UpdateProjectToNet80Command.cs b/DotNetSolutionTools.CLI/Commands/UpdateProjectToNet80Command.cs index 40db0bb..e31a8c3 100644 --- a/DotNetSolutionTools.CLI/Commands/UpdateProjectToNet80Command.cs +++ b/DotNetSolutionTools.CLI/Commands/UpdateProjectToNet80Command.cs @@ -3,7 +3,7 @@ using Spectre.Console.Cli; namespace DotNetSolutionTools.CLI.Commands; -public class UpdateProjectToNet80Command : Command +public class UpdateProjectToNet80Command : AsyncCommand { public sealed class Settings : CommandSettings { @@ -11,16 +11,15 @@ public class UpdateProjectToNet80Command : Command ExecuteAsync(CommandContext context, Settings settings) { - // validate a real folder path was passed in if (!Directory.Exists(settings.CsprojFilePath)) { - Console.WriteLine("Invalid folder path"); + Console.WriteLine("Invalid file path. Please pass in a valid file path to a .csproj file."); return 1; } - Console.WriteLine("Deleting bin, obj, and node_modules folders"); - CleanFolder.DeleteBinObjAndNodeModulesFoldersInFolder(settings.CsprojFilePath); + Console.WriteLine("Upgrading project to .NET 8.0"); + await DotNetUpgrade.UpdateProjectAtPathToNet80(settings.CsprojFilePath); Console.WriteLine("=================================================="); Console.WriteLine("Done!"); diff --git a/DotNetSolutionTools.CLI/Commands/UpdateSlnToNet80Command.cs b/DotNetSolutionTools.CLI/Commands/UpdateSlnToNet80Command.cs new file mode 100644 index 0000000..5064735 --- /dev/null +++ b/DotNetSolutionTools.CLI/Commands/UpdateSlnToNet80Command.cs @@ -0,0 +1,28 @@ +using DotNetSolutionTools.Core; +using Spectre.Console.Cli; + +namespace DotNetSolutionTools.CLI.Commands; + +public class UpdateSlnToNet80Command : AsyncCommand +{ + public sealed class Settings : CommandSettings + { + [CommandArgument(1, "")] + public required string SolutionFilePath { get; set; } + } + + public override async Task ExecuteAsync(CommandContext context, Settings settings) + { + if (!File.Exists(settings.SolutionFilePath)) + { + Console.WriteLine("Invalid file path. Please pass in a valid file path to a .csproj file."); + return 1; + } + Console.WriteLine("Upgrading project to .NET 8.0"); + await DotNetUpgrade.UpdateProjectsInSolutionToNet80(settings.SolutionFilePath); + + Console.WriteLine("=================================================="); + Console.WriteLine("Done!"); + return 0; + } +} diff --git a/DotNetSolutionTools.CLI/Program.cs b/DotNetSolutionTools.CLI/Program.cs index 94064f8..da159b4 100644 --- a/DotNetSolutionTools.CLI/Program.cs +++ b/DotNetSolutionTools.CLI/Program.cs @@ -13,6 +13,8 @@ app.Configure(config => config.AddCommand("format-csproj"); config.AddCommand("warnings-as-errors"); config.AddCommand("clear-bin-obj"); + config.AddCommand("update-csproj-net80"); + config.AddCommand("update-sln-net80"); }); var instance = MSBuildLocator.QueryVisualStudioInstances().OrderByDescending(instance => instance.Version).First(); diff --git a/README.md b/README.md index 6c51263..4669e98 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Various tools to manage a C# solution. -✨ Update a solution to .NET 8 - updates csproj target versions and all Microsoft Nuget Packages +✨ Update a solution to .NET 8 - updates csproj target versions and all Microsoft Nuget Packages. Ensure you update the global.json to use the latest SDK version, as this is not done for you. ## App The app feels quite self explanatory :) @@ -31,6 +31,6 @@ _options_ **clear-bin-obj** `` Deletes all bin and obj folders, and node_modules folders in the solution folder. -**update-sln-net80** `` **NOT IMPLEMENTED IN CLI YET** Updates all projects and Microsoft NuGet packages in sln to .NET 8.0. +**update-sln-net80** `` Updates all projects and Microsoft NuGet packages in sln to .NET 8.0. -**update-csproj-net80** `` **NOT IMPLEMENTED IN CLI YET** Updates project and Microsoft NuGet packages to .NET 8.0. +**update-csproj-net80** `` Updates project and Microsoft NuGet packages to .NET 8.0.