diff --git a/src/SharpIDE.Application/Features/ProjectIntrospection/Test.cs b/src/SharpIDE.Application/Features/ProjectIntrospection/Test.cs new file mode 100644 index 0000000..206db93 --- /dev/null +++ b/src/SharpIDE.Application/Features/ProjectIntrospection/Test.cs @@ -0,0 +1,20 @@ +using Ardalis.GuardClauses; +using Microsoft.Build.Evaluation; + +namespace SharpIDE.Application.Features.ProjectIntrospection; + +public static class Test +{ + private static readonly ProjectCollection _projectCollection = ProjectCollection.GlobalProjectCollection; + public static async Task GetProject(string projectFilePath) + { + Guard.Against.Null(projectFilePath, nameof(projectFilePath)); + + await Task.CompletedTask.ConfigureAwait(ConfigureAwaitOptions.ForceYielding); + + var project = _projectCollection.LoadProject(projectFilePath); + Console.WriteLine($"Project loaded: {project.FullPath}"); + //var outputType = project.GetProperty("OutputType"); + return project; + } +} diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/GetNodesInSolution.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/GetNodesInSolution.cs index de63e58..d6ce503 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/GetNodesInSolution.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/GetNodesInSolution.cs @@ -37,15 +37,6 @@ public static class GetNodesInSolution .ToList(); return files; } - - public static List GetFoldersInProject(string projectPath) - { - var files = GetFilesInProject(projectPath); - var rootDirectoryOfProject = new DirectoryInfo(Path.GetDirectoryName(projectPath)!); - - var grouped = files.GroupBy(s => s.Directory!.FullName); - throw new NotImplementedException(); - } } diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs index 5f45770..f9daf17 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs @@ -1,4 +1,6 @@ -namespace SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; +using Microsoft.Build.Evaluation; + +namespace SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; public interface ISharpIdeNode; @@ -24,4 +26,5 @@ public class SharpIdeProjectModel : ISharpIdeNode public required List Folders { get; set; } public required List Files { get; set; } public bool Expanded { get; set; } + public required Task MsBuildEvaluationProject { get; set; } } diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/VsPersistenceMapper.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/VsPersistenceMapper.cs index fdfc53e..e49697a 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/VsPersistenceMapper.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/VsPersistenceMapper.cs @@ -1,4 +1,5 @@ using System.Diagnostics; +using SharpIDE.Application.Features.ProjectIntrospection; namespace SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; @@ -34,8 +35,8 @@ public static class VsPersistenceMapper Name = projectModel.Model.ActualDisplayName, FilePath = projectModel.FullFilePath, Files = TreeMapperV2.GetFiles(projectModel.FullFilePath), - Folders = TreeMapperV2.GetSubFolders(projectModel.FullFilePath) - + Folders = TreeMapperV2.GetSubFolders(projectModel.FullFilePath), + MsBuildEvaluationProject = Test.GetProject(projectModel.FullFilePath) }; private static SharpIdeSolutionFolder GetSharpIdeSolutionFolder(IntermediateSlnFolderModel folderModel) => new SharpIdeSolutionFolder()