get msbuild eval projects

This commit is contained in:
Matt Parker
2025-08-07 18:12:41 +10:00
parent f18ecc9c6b
commit 082a3a6bbf
4 changed files with 27 additions and 12 deletions

View File

@@ -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<Project> 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;
}
}

View File

@@ -37,15 +37,6 @@ public static class GetNodesInSolution
.ToList();
return files;
}
public static List<Folder> 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();
}
}

View File

@@ -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<SharpIdeFolder> Folders { get; set; }
public required List<SharpIdeFile> Files { get; set; }
public bool Expanded { get; set; }
public required Task<Project> MsBuildEvaluationProject { get; set; }
}

View File

@@ -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()