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<SharpIdeFolder> Folders { get; set; }
|
||||||
public required List<SharpIdeFile> Files { get; set; }
|
public required List<SharpIdeFile> Files { get; set; }
|
||||||
public bool Expanded { 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,
|
FilePath = projectModel.FullFilePath,
|
||||||
Files = TreeMapperV2.GetFiles(projectModel.FullFilePath),
|
Files = TreeMapperV2.GetFiles(projectModel.FullFilePath),
|
||||||
Folders = TreeMapperV2.GetSubFolders(projectModel.FullFilePath),
|
Folders = TreeMapperV2.GetSubFolders(projectModel.FullFilePath),
|
||||||
MsBuildEvaluationProject = Test.GetProject(projectModel.FullFilePath)
|
MsBuildEvaluationProjectTask = Test.GetProject(projectModel.FullFilePath)
|
||||||
};
|
};
|
||||||
allProjects.Add(project);
|
allProjects.Add(project);
|
||||||
return project;
|
return project;
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
<MudIcon Icon="@Icons.Material.Filled.PlayArrow" Size="Size.Medium" Color="Color.Default"/>
|
<MudIcon Icon="@Icons.Material.Filled.PlayArrow" Size="Size.Medium" Color="Color.Default"/>
|
||||||
</MudButton>
|
</MudButton>
|
||||||
<MudList T="string" Dense="true" Class="pa-0 ma-0">
|
<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;">
|
<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">
|
<MudStack Row="true" Spacing="1" AlignItems="AlignItems.Center" Class="pa-0 ma-0">
|
||||||
@@ -35,5 +35,16 @@
|
|||||||
[Parameter, EditorRequired]
|
[Parameter, EditorRequired]
|
||||||
public SharpIdeSolutionModel SolutionModel { get; set; } = null!;
|
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 _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