Skip to content

Commit

Permalink
Cli add-module: Use MVC package for blazor-server application when mo…
Browse files Browse the repository at this point in the history
…dule doesn't have a blazor package

resolves #8573
  • Loading branch information
yekalkan committed Apr 13, 2021
1 parent 5a518b5 commit 287a969
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,12 @@ public static string[] FindNpmTargetProjectFile(string[] projectFiles)
projects.Add(project);
}

project = FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor");
if (project != null && BlazorProjectTypeChecker.IsBlazorServerProject(project))
{
projects.Add(project);
}

return projects.ToArray();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ private async Task RemoveUnnecessaryProjectsAsync(string solutionDirectory, Modu
var moduleDirectory = Path.Combine(solutionDirectory, "modules", module.Name);
var moduleSolutionFile = Directory.GetFiles(moduleDirectory, "*.sln", SearchOption.TopDirectoryOnly).First();
var isProjectTiered = await IsProjectTiered(projectFiles);
var webPackagesWillBeAddedToBlazorServerProject = false;

var blazorProject = projectFiles.FirstOrDefault(p => p.EndsWith(".Blazor.csproj"));
if (blazorProject == null)
Expand All @@ -205,14 +206,16 @@ private async Task RemoveUnnecessaryProjectsAsync(string solutionDirectory, Modu
if (isBlazorServer)
{
await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.BlazorWebAssembly, isProjectTiered);

webPackagesWillBeAddedToBlazorServerProject = module.NugetPackages.All(np=> np.Target != NuGetPackageTarget.BlazorServer && np.TieredTarget != NuGetPackageTarget.BlazorServer);
}
else
{
await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.BlazorServer, isProjectTiered);
}
}

if (!projectFiles.Any(p => p.EndsWith(".Web.csproj")))
if (!projectFiles.Any(p => p.EndsWith(".Web.csproj")) && !webPackagesWillBeAddedToBlazorServerProject)
{
await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.Web, isProjectTiered);
}
Expand Down Expand Up @@ -459,13 +462,20 @@ await SolutionFileModifier.RemoveProjectFromSolutionFileAsync(moduleSolutionFile
private async Task AddNugetAndNpmReferences(ModuleWithMastersInfo module, string[] projectFiles,
bool useDotnetCliToInstall)
{
var webPackagesWillBeAddedToBlazorServerProject = SouldWebPackagesBeAddedToBlazorServerProject(module, projectFiles);

foreach (var nugetPackage in module.NugetPackages)
{
var nugetTarget =
await IsProjectTiered(projectFiles) && nugetPackage.TieredTarget != NuGetPackageTarget.Undefined
? nugetPackage.TieredTarget
: nugetPackage.Target;

if (webPackagesWillBeAddedToBlazorServerProject && nugetTarget == NuGetPackageTarget.Web)
{
nugetTarget = NuGetPackageTarget.BlazorServer;
}

var targetProjectFile = ProjectFinder.FindNuGetTargetProjectFile(projectFiles, nugetTarget);
if (targetProjectFile == null)
{
Expand Down Expand Up @@ -501,6 +511,19 @@ await IsProjectTiered(projectFiles) && nugetPackage.TieredTarget != NuGetPackage
}
}

private static bool SouldWebPackagesBeAddedToBlazorServerProject(ModuleWithMastersInfo module, string[] projectFiles)
{
var blazorProject = projectFiles.FirstOrDefault(p => p.EndsWith(".Blazor.csproj"));

if (blazorProject == null)
{
return false;
}

var isBlazorServerProject = BlazorProjectTypeChecker.IsBlazorServerProject(blazorProject);
return isBlazorServerProject && module.NugetPackages.All(np => np.Target != NuGetPackageTarget.BlazorServer && np.TieredTarget != NuGetPackageTarget.BlazorServer);
}

protected void ModifyDbContext(string[] projectFiles, ModuleInfo module, bool skipDbMigrations = false)
{
if (string.IsNullOrWhiteSpace(module.EfCoreConfigureMethodName))
Expand Down

0 comments on commit 287a969

Please sign in to comment.