public async Task Publish_HostedApp_WithNoBuild_Works() { // Arrange using var project = ProjectDirectory.Create("blazorhosted", additionalProjects: new[] { "standalone", "razorclasslibrary", }); project.TargetFramework = "net5.0"; var result = await MSBuildProcessManager.DotnetMSBuild(project, "Build"); Assert.BuildPassed(result); result = await MSBuildProcessManager.DotnetMSBuild(project, "Publish", "/p:NoBuild=true"); var publishDirectory = project.PublishOutputDirectory; // Make sure the main project exists Assert.FileExists(result, publishDirectory, "blazorhosted.dll"); var blazorPublishDirectory = Path.Combine(publishDirectory, "standalone"); Assert.FileExists(result, blazorPublishDirectory, "dist", "_framework", "blazor.boot.json"); Assert.FileExists(result, blazorPublishDirectory, "dist", "_framework", "blazor.webassembly.js"); Assert.FileExists(result, blazorPublishDirectory, "dist", "_framework", "wasm", "dotnet.wasm"); Assert.FileExists(result, blazorPublishDirectory, "dist", "_framework", "wasm", "dotnet.js"); Assert.FileExists(result, blazorPublishDirectory, "dist", "_framework", "_bin", "standalone.dll"); Assert.FileExists(result, blazorPublishDirectory, "dist", "_framework", "_bin", "Microsoft.Extensions.Logging.Abstractions.dll"); // Verify dependencies are part of the output. // Verify static assets are in the publish directory Assert.FileExists(result, blazorPublishDirectory, "dist", "index.html"); // Verify static web assets from referenced projects are copied. // Uncomment once https://github.com/dotnet/aspnetcore/issues/17426 is resolved. // Assert.FileExists(result, publishDirectory, "wwwroot", "_content", "RazorClassLibrary", "wwwroot", "exampleJsInterop.js"); // Assert.FileExists(result, publishDirectory, "wwwroot", "_content", "RazorClassLibrary", "styles.css"); // Verify static assets are in the publish directory Assert.FileExists(result, blazorPublishDirectory, "dist", "index.html"); // Verify web.config Assert.FileExists(result, publishDirectory, "web.config"); }
public async Task Build_WithLinkOnBuildDisabled_Works() { // Arrange using var project = ProjectDirectory.Create("standalone"); project.AddProjectFileContent( @"<PropertyGroup> <BlazorLinkOnBuild>false</BlazorLinkOnBuild> </PropertyGroup>"); var result = await MSBuildProcessManager.DotnetMSBuild(project); Assert.BuildPassed(result); var buildOutputDirectory = project.BuildOutputDirectory; Assert.FileExists(result, buildOutputDirectory, "dist", "_framework", "blazor.boot.json"); Assert.FileExists(result, buildOutputDirectory, "dist", "_framework", "blazor.webassembly.js"); Assert.FileExists(result, buildOutputDirectory, "dist", "_framework", "wasm", "dotnet.wasm"); Assert.FileExists(result, buildOutputDirectory, "dist", "_framework", "wasm", "dotnet.js"); Assert.FileExists(result, buildOutputDirectory, "dist", "_framework", "_bin", "standalone.dll"); Assert.FileExists(result, buildOutputDirectory, "dist", "_framework", "_bin", "Microsoft.Extensions.Logging.Abstractions.dll"); // Verify dependencies are part of the output. }
public static Task <MSBuildResult> DotnetMSBuild( ProjectDirectory project, string target = "Build", string args = null) { var buildArgumentList = new List <string> { // Disable node-reuse. We don't want msbuild processes to stick around // once the test is completed. "/nr:false", // Always generate a bin log for debugging purposes "/bl", }; buildArgumentList.Add($"/t:{target}"); buildArgumentList.Add($"/p:Configuration={project.Configuration}"); buildArgumentList.Add(args); var buildArguments = string.Join(" ", buildArgumentList); return(MSBuildProcessManager.RunProcessAsync(project, buildArguments)); }
public static async Task <MSBuildResult> RunProcessAsync( ProjectDirectory project, string arguments, TimeSpan?timeout = null) { var processStartInfo = new ProcessStartInfo() { WorkingDirectory = project.DirectoryPath, UseShellExecute = false, RedirectStandardError = true, RedirectStandardOutput = true, }; processStartInfo.FileName = DotNetMuxer.MuxerPathOrDefault(); processStartInfo.Arguments = $"msbuild {arguments}"; // Suppresses the 'Welcome to .NET Core!' output that times out tests and causes locked file issues. // When using dotnet we're not guarunteed to run in an environment where the dotnet.exe has had its first run experience already invoked. processStartInfo.EnvironmentVariables["DOTNET_SKIP_FIRST_TIME_EXPERIENCE"] = "true"; var processResult = await RunProcessCoreAsync(processStartInfo, timeout); return(new MSBuildResult(project, processResult.FileName, processResult.Arguments, processResult.ExitCode, processResult.Output)); }