get runnable projects
This commit is contained in:
@@ -27,5 +27,9 @@ 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; }
|
||||
public required Task<Project> MsBuildEvaluationProjectTask { get; set; }
|
||||
|
||||
public Project MsBuildEvaluationProject => MsBuildEvaluationProjectTask.IsCompletedSuccessfully
|
||||
? MsBuildEvaluationProjectTask.Result
|
||||
: throw new InvalidOperationException("Do not attempt to access the MsBuildEvaluationProject before it has been loaded");
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ public static class VsPersistenceMapper
|
||||
FilePath = projectModel.FullFilePath,
|
||||
Files = TreeMapperV2.GetFiles(projectModel.FullFilePath),
|
||||
Folders = TreeMapperV2.GetSubFolders(projectModel.FullFilePath),
|
||||
MsBuildEvaluationProject = Test.GetProject(projectModel.FullFilePath)
|
||||
MsBuildEvaluationProjectTask = Test.GetProject(projectModel.FullFilePath)
|
||||
};
|
||||
allProjects.Add(project);
|
||||
return project;
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
<MudIcon Icon="@Icons.Material.Filled.PlayArrow" Size="Size.Medium" Color="Color.Default"/>
|
||||
</MudButton>
|
||||
<MudList T="string" Dense="true" Class="pa-0 ma-0">
|
||||
@if (SolutionModel?.AllProjects?.Count is >= 0)
|
||||
@if (_ready)
|
||||
{
|
||||
@foreach (var project in SolutionModel.AllProjects)
|
||||
@foreach (var project in RunnableProjects)
|
||||
{
|
||||
<MudListItem T="string" Dense="true" Class="pa-0 ma-0 pl-2" Style="max-height: 36px;">
|
||||
<MudStack Row="true" Spacing="1" AlignItems="AlignItems.Center" Class="pa-0 ma-0">
|
||||
@@ -35,5 +35,16 @@
|
||||
[Parameter, EditorRequired]
|
||||
public SharpIdeSolutionModel SolutionModel { get; set; } = null!;
|
||||
|
||||
private IEnumerable<SharpIdeProjectModel> RunnableProjects => SolutionModel.AllProjects.Where(p => p.MsBuildEvaluationProject.GetPropertyValue("OutputType") is "Exe" or "WinExe");
|
||||
|
||||
private bool _open = false;
|
||||
private bool _ready = false;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
var tasks = SolutionModel.AllProjects.Select(p => p.MsBuildEvaluationProjectTask).ToList();
|
||||
await Task.WhenAll(tasks);
|
||||
_ready = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user