Cli add-module: Use MVC package for blazor-server application when module doesn't have a blazor package

resolves https://github.com/abpframework/abp/issues/8573
pull/8597/head
Yunus Emre Kalkan 5 years ago
parent 5a518b58ae
commit 287a969644

@ -94,6 +94,12 @@ namespace Volo.Abp.Cli.ProjectModification
projects.Add(project);
}
project = FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor");
if (project != null && BlazorProjectTypeChecker.IsBlazorServerProject(project))
{
projects.Add(project);
}
return projects.ToArray();
}

@ -189,6 +189,7 @@ namespace Volo.Abp.Cli.ProjectModification
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)
@ -205,6 +206,8 @@ namespace Volo.Abp.Cli.ProjectModification
if (isBlazorServer)
{
await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.BlazorWebAssembly, isProjectTiered);
webPackagesWillBeAddedToBlazorServerProject = module.NugetPackages.All(np=> np.Target != NuGetPackageTarget.BlazorServer && np.TieredTarget != NuGetPackageTarget.BlazorServer);
}
else
{
@ -212,7 +215,7 @@ namespace Volo.Abp.Cli.ProjectModification
}
}
if (!projectFiles.Any(p => p.EndsWith(".Web.csproj")))
if (!projectFiles.Any(p => p.EndsWith(".Web.csproj")) && !webPackagesWillBeAddedToBlazorServerProject)
{
await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.Web, isProjectTiered);
}
@ -459,6 +462,8 @@ namespace Volo.Abp.Cli.ProjectModification
private async Task AddNugetAndNpmReferences(ModuleWithMastersInfo module, string[] projectFiles,
bool useDotnetCliToInstall)
{
var webPackagesWillBeAddedToBlazorServerProject = SouldWebPackagesBeAddedToBlazorServerProject(module, projectFiles);
foreach (var nugetPackage in module.NugetPackages)
{
var nugetTarget =
@ -466,6 +471,11 @@ namespace Volo.Abp.Cli.ProjectModification
? nugetPackage.TieredTarget
: nugetPackage.Target;
if (webPackagesWillBeAddedToBlazorServerProject && nugetTarget == NuGetPackageTarget.Web)
{
nugetTarget = NuGetPackageTarget.BlazorServer;
}
var targetProjectFile = ProjectFinder.FindNuGetTargetProjectFile(projectFiles, nugetTarget);
if (targetProjectFile == null)
{
@ -501,6 +511,19 @@ namespace Volo.Abp.Cli.ProjectModification
}
}
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))

Loading…
Cancel
Save