This commit is contained in:
Matthew Parker
2023-08-31 21:37:54 +10:00
parent 0a7f1c072e
commit 701218a28b
21 changed files with 55 additions and 41 deletions

View File

@@ -1,6 +1,6 @@
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SolutionParityChecker.App.App"
x:Class="DotNetSolutionTools.App.App"
RequestedThemeVariant="Default">
<Application.Styles>
<FluentTheme />

View File

@@ -1,10 +1,10 @@
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using SolutionParityChecker.App.ViewModels;
using SolutionParityChecker.App.Views;
using DotNetSolutionTools.App.ViewModels;
using DotNetSolutionTools.App.Views;
namespace SolutionParityChecker.App;
namespace DotNetSolutionTools.App;
public partial class App : Application
{

View File

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 172 KiB

View File

@@ -28,6 +28,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SolutionParityChecker\SolutionParityChecker.csproj" />
<ProjectReference Include="..\DotNetSolutionTools.Core\DotNetSolutionTools.Core.csproj" />
</ItemGroup>
</Project>

View File

@@ -1,7 +1,7 @@
using System;
using Avalonia;
namespace SolutionParityChecker.App;
namespace DotNetSolutionTools.App;
class Program
{

View File

@@ -10,8 +10,9 @@ using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Platform.Storage;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using DotNetSolutionTools.Core;
namespace SolutionParityChecker.App.ViewModels;
namespace DotNetSolutionTools.App.ViewModels;
public partial class MainWindowViewModel : ViewModelBase
{
@@ -33,17 +34,18 @@ public partial class MainWindowViewModel : ViewModelBase
[RelayCommand]
private async Task ExecuteParityChecker(CancellationToken token)
{
var results = SolutionParityChecker.CompareSolutionAndCSharpProjects(
SolutionFolderPath,
SolutionFilePath
);
var results =
DotNetSolutionTools.Core.SolutionParityChecker.CompareSolutionAndCSharpProjects(
SolutionFolderPath,
SolutionFilePath
);
ParityResults.Clear();
foreach (var result in results)
{
ParityResults.Add(result);
}
}
[RelayCommand]
private async Task FormatCsProjFile(CancellationToken token)
{

View File

@@ -1,7 +1,7 @@
using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel;
namespace SolutionParityChecker.App.ViewModels;
namespace DotNetSolutionTools.App.ViewModels;
public partial class ViewModelBase : ObservableObject
{

View File

@@ -2,9 +2,9 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:SolutionParityChecker.App.ViewModels"
xmlns:viewModels="clr-namespace:DotNetSolutionTools.App.ViewModels"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="SolutionParityChecker.App.Views.MainWindow"
x:Class="DotNetSolutionTools.App.Views.MainWindow"
x:DataType="viewModels:MainWindowViewModel"
Icon="/Assets/avalonia-logo.ico"
Title="FileOps">

View File

@@ -1,8 +1,8 @@
using Avalonia.Controls;
using Avalonia.Interactivity;
using SolutionParityChecker.App.ViewModels;
using DotNetSolutionTools.App.ViewModels;
namespace SolutionParityChecker.App.Views;
namespace DotNetSolutionTools.App.Views;
public partial class MainWindow : Window
{

View File

@@ -1,9 +1,8 @@
using System.ComponentModel;
using Microsoft.Build.Construction;
using Spectre.Console;
using DotNetSolutionTools.Core;
using Spectre.Console.Cli;
namespace SolutionParityChecker.CLI.Commands;
namespace DotNetSolutionTools.CLI.Commands;
public class CompareCommand : Command<CompareCommand.Settings>
{

View File

@@ -1,7 +1,7 @@
using System.ComponentModel;
using DotNetSolutionTools.Core;
using Spectre.Console.Cli;
namespace SolutionParityChecker.CLI.Commands;
namespace DotNetSolutionTools.CLI.Commands;
public class FormatCsprojCommand : Command<FormatCsprojCommand.Settings>
{

View File

@@ -1,7 +1,8 @@
using System.ComponentModel;
using DotNetSolutionTools.Core;
using Spectre.Console.Cli;
namespace SolutionParityChecker.CLI.Commands;
namespace DotNetSolutionTools.CLI.Commands;
public class ImplicitUsingsCommand : Command<ImplicitUsingsCommand.Settings>
{
@@ -14,12 +15,14 @@ public class ImplicitUsingsCommand : Command<ImplicitUsingsCommand.Settings>
[Description("Add Implicit Usings=true to projects missing them. Default is false.")]
[DefaultValue(false)]
public bool AddMissing { get; set; } = false;
[CommandOption("-d|--enable-disabled")]
[Description("Sets Implicit Usings to true for any projects with it disabled. Default is false.")]
[Description(
"Sets Implicit Usings to true for any projects with it disabled. Default is false."
)]
[DefaultValue(false)]
public bool EnableDisabled { get; set; } = false;
[CommandOption("-a|--enable-all")]
[Description("Enables Implicit Usings for all projects. Default is false.")]
[DefaultValue(false)]
@@ -39,12 +42,16 @@ public class ImplicitUsingsCommand : Command<ImplicitUsingsCommand.Settings>
);
return 1;
}
var cSharpProjects = SolutionParityChecker.GetCSharpProjectObjectsFromSolutionFile(solutionFile);
var cSharpProjects = SolutionParityChecker.GetCSharpProjectObjectsFromSolutionFile(
solutionFile
);
Console.WriteLine($"Found {cSharpProjects.Count} C# Projects");
Console.WriteLine("==================================================");
// Get the list of projects
var projectsMissingImplicitUsings = ImplicitUsings.FindCSharpProjectsMissingImplicitUsings(cSharpProjects);
var projectsMissingImplicitUsings = ImplicitUsings.FindCSharpProjectsMissingImplicitUsings(
cSharpProjects
);
Console.WriteLine(
$"{projectsMissingImplicitUsings.Count} C# Projects have missing or disabled implicit usings"
@@ -54,15 +61,21 @@ public class ImplicitUsingsCommand : Command<ImplicitUsingsCommand.Settings>
{
Console.WriteLine(project.DirectoryPath);
}
if (settings.AddMissing)
{
Console.WriteLine("==================================================");
Console.WriteLine("Adding missing implicit usings");
ImplicitUsings.AddMissingImplicitUsings(projectsMissingImplicitUsings);
var updatedProjects = SolutionParityChecker.GetCSharpProjectObjectsFromSolutionFile(solutionFile);
var projectsWithMissing = ImplicitUsings.FindCSharpProjectsMissingImplicitUsings(updatedProjects);
Console.WriteLine($"There are now {projectsWithMissing.Count} C# Projects missing/disabled implicit usings");
var updatedProjects = SolutionParityChecker.GetCSharpProjectObjectsFromSolutionFile(
solutionFile
);
var projectsWithMissing = ImplicitUsings.FindCSharpProjectsMissingImplicitUsings(
updatedProjects
);
Console.WriteLine(
$"There are now {projectsWithMissing.Count} C# Projects missing/disabled implicit usings"
);
}
if (settings.EnableDisabled)
{

View File

@@ -15,7 +15,7 @@
<ItemGroup>
<ProjectReference Include="..\SolutionParityChecker\SolutionParityChecker.csproj" />
<ProjectReference Include="..\DotNetSolutionTools.Core\DotNetSolutionTools.Core.csproj" />
</ItemGroup>
</Project>

View File

@@ -1,4 +1,4 @@
using SolutionParityChecker.CLI.Commands;
using DotNetSolutionTools.CLI.Commands;
using Spectre.Console.Cli;
var app = new CommandApp();

View File

@@ -1,7 +1,7 @@
using System.Text;
using System.Xml;
namespace SolutionParityChecker;
namespace DotNetSolutionTools.Core;
public static class FormatCsproj
{

View File

@@ -1,6 +1,6 @@
using Microsoft.Build.Construction;
namespace SolutionParityChecker;
namespace DotNetSolutionTools.Core;
public static class ImplicitUsings
{

View File

@@ -1,6 +1,6 @@
using Microsoft.Build.Construction;
namespace SolutionParityChecker;
namespace DotNetSolutionTools.Core;
public static class SolutionParityChecker
{

View File

@@ -1,10 +1,10 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SolutionParityChecker.CLI", "SolutionParityChecker.CLI\SolutionParityChecker.CLI.csproj", "{0EAC3CFF-28B2-4ACA-BC18-8148A75F89D9}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetSolutionTools.CLI", "DotNetSolutionTools.CLI\DotNetSolutionTools.CLI.csproj", "{0EAC3CFF-28B2-4ACA-BC18-8148A75F89D9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SolutionParityChecker", "SolutionParityChecker\SolutionParityChecker.csproj", "{2635CBAC-0CEF-4BEE-A6FD-154796A4F467}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetSolutionTools.Core", "DotNetSolutionTools.Core\DotNetSolutionTools.Core.csproj", "{2635CBAC-0CEF-4BEE-A6FD-154796A4F467}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SolutionParityChecker.App", "SolutionParityChecker.App\SolutionParityChecker.App.csproj", "{A7F46873-C8EC-4C2E-86F5-B9F2472C8036}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SolutionParityChecker.App", "DotNetSolutionTools.App\DotNetSolutionTools.App.csproj", "{A7F46873-C8EC-4C2E-86F5-B9F2472C8036}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4B49F43F-2B01-487B-9831-6CF51AE4A977}"
ProjectSection(SolutionItems) = preProject

View File

@@ -1,4 +1,4 @@
# Solution Parity Checker
# Dotnet Solution Tools
Various tools to manage a C# solution.