From a63b695db86a42c663e820e86649bc973316ad96 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Wed, 6 Dec 2017 23:17:23 +0000 Subject: [PATCH] Begin on DevHost and sample of standalone app --- Blazor.sln | 14 ++++++++ .../BlazorStandalone/BlazorStandalone.csproj | 19 +++++++++++ samples/BlazorStandalone/Program.cs | 15 +++++++++ .../Properties/launchSettings.json | 27 ++++++++++++++++ samples/BlazorStandalone/wwwroot/index.html | 10 ++++++ .../Microsoft.Blazor.DevHost.csproj | 16 ++++++++++ src/Microsoft.Blazor.DevHost/Program.cs | 32 +++++++++++++++++++ .../Server/Program.cs | 21 ++++++++++++ .../Server/Startup.cs | 24 ++++++++++++++ 9 files changed, 178 insertions(+) create mode 100644 samples/BlazorStandalone/BlazorStandalone.csproj create mode 100644 samples/BlazorStandalone/Program.cs create mode 100644 samples/BlazorStandalone/Properties/launchSettings.json create mode 100644 samples/BlazorStandalone/wwwroot/index.html create mode 100644 src/Microsoft.Blazor.DevHost/Microsoft.Blazor.DevHost.csproj create mode 100644 src/Microsoft.Blazor.DevHost/Program.cs create mode 100644 src/Microsoft.Blazor.DevHost/Server/Program.cs create mode 100644 src/Microsoft.Blazor.DevHost/Server/Startup.cs diff --git a/Blazor.sln b/Blazor.sln index 1644fdec8a..ce7dde20e1 100644 --- a/Blazor.sln +++ b/Blazor.sln @@ -49,6 +49,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MonoSanityClient", "samples EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Blazor.Browser", "src\Microsoft.Blazor.Browser\Microsoft.Blazor.Browser.csproj", "{58D2DF2E-4181-4B16-9C69-A3F3EDB89B28}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Blazor.DevHost", "src\Microsoft.Blazor.DevHost\Microsoft.Blazor.DevHost.csproj", "{EE690312-2353-4DD0-9250-EE5EDAC6D4F7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlazorStandalone", "samples\BlazorStandalone\BlazorStandalone.csproj", "{754BBACA-E05B-4DAE-ACFC-1B3B429AE43F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -87,6 +91,14 @@ Global {58D2DF2E-4181-4B16-9C69-A3F3EDB89B28}.Debug|Any CPU.Build.0 = Debug|Any CPU {58D2DF2E-4181-4B16-9C69-A3F3EDB89B28}.Release|Any CPU.ActiveCfg = Release|Any CPU {58D2DF2E-4181-4B16-9C69-A3F3EDB89B28}.Release|Any CPU.Build.0 = Release|Any CPU + {EE690312-2353-4DD0-9250-EE5EDAC6D4F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EE690312-2353-4DD0-9250-EE5EDAC6D4F7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EE690312-2353-4DD0-9250-EE5EDAC6D4F7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EE690312-2353-4DD0-9250-EE5EDAC6D4F7}.Release|Any CPU.Build.0 = Release|Any CPU + {754BBACA-E05B-4DAE-ACFC-1B3B429AE43F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {754BBACA-E05B-4DAE-ACFC-1B3B429AE43F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {754BBACA-E05B-4DAE-ACFC-1B3B429AE43F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {754BBACA-E05B-4DAE-ACFC-1B3B429AE43F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -101,6 +113,8 @@ Global {5BC2A10D-B6CA-43AE-B73C-2A41AE1039F9} = {ADA3AE29-F6DE-49F6-8C7C-B321508CAE8E} {06AAAE9E-96DE-4574-97DA-9C4C7D9FE990} = {F5FDD4E5-6A52-4A86-BE5E-5E42CB1DC8DA} {58D2DF2E-4181-4B16-9C69-A3F3EDB89B28} = {B867E038-B3CE-43E3-9292-61568C46CDEB} + {EE690312-2353-4DD0-9250-EE5EDAC6D4F7} = {B867E038-B3CE-43E3-9292-61568C46CDEB} + {754BBACA-E05B-4DAE-ACFC-1B3B429AE43F} = {F5FDD4E5-6A52-4A86-BE5E-5E42CB1DC8DA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {504DA352-6788-4DC0-8705-82167E72A4D3} diff --git a/samples/BlazorStandalone/BlazorStandalone.csproj b/samples/BlazorStandalone/BlazorStandalone.csproj new file mode 100644 index 0000000000..d6cd99b14b --- /dev/null +++ b/samples/BlazorStandalone/BlazorStandalone.csproj @@ -0,0 +1,19 @@ + + + + netcoreapp2.0 + + + + + + + + run --project ..\..\src\Microsoft.Blazor.DevHost --no-build serve + + + diff --git a/samples/BlazorStandalone/Program.cs b/samples/BlazorStandalone/Program.cs new file mode 100644 index 0000000000..9ef94e93a5 --- /dev/null +++ b/samples/BlazorStandalone/Program.cs @@ -0,0 +1,15 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; + +namespace BlazorStandalone +{ + public class Program + { + public static void Main(string[] args) + { + Console.WriteLine("Hello, world!"); + } + } +} diff --git a/samples/BlazorStandalone/Properties/launchSettings.json b/samples/BlazorStandalone/Properties/launchSettings.json new file mode 100644 index 0000000000..310cc2ccd5 --- /dev/null +++ b/samples/BlazorStandalone/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:5000/", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "BlazorStandalone": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:5000/" + } + } +} diff --git a/samples/BlazorStandalone/wwwroot/index.html b/samples/BlazorStandalone/wwwroot/index.html new file mode 100644 index 0000000000..100e47440b --- /dev/null +++ b/samples/BlazorStandalone/wwwroot/index.html @@ -0,0 +1,10 @@ + + + + + + + +

Hello

+ + \ No newline at end of file diff --git a/src/Microsoft.Blazor.DevHost/Microsoft.Blazor.DevHost.csproj b/src/Microsoft.Blazor.DevHost/Microsoft.Blazor.DevHost.csproj new file mode 100644 index 0000000000..a2a967bd02 --- /dev/null +++ b/src/Microsoft.Blazor.DevHost/Microsoft.Blazor.DevHost.csproj @@ -0,0 +1,16 @@ + + + + netcoreapp2.0 + Exe + Microsoft.Blazor.DevHost.Program + + + + + + + + + + diff --git a/src/Microsoft.Blazor.DevHost/Program.cs b/src/Microsoft.Blazor.DevHost/Program.cs new file mode 100644 index 0000000000..7a441aa6be --- /dev/null +++ b/src/Microsoft.Blazor.DevHost/Program.cs @@ -0,0 +1,32 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Linq; + +namespace Microsoft.Blazor.DevHost +{ + internal class Program + { + static int Main(string[] args) + { + if (args.Length == 0) + { + Console.WriteLine("Usage: dotnet blazor "); + return 1; + } + + var command = args[0]; + var remainingArgs = args.Skip(1).ToArray(); + + switch (command.ToLowerInvariant()) + { + case "serve": + Server.Program.Main(remainingArgs); + return 0; + default: + throw new InvalidOperationException($"Unknown command: {command}"); + } + } + } +} diff --git a/src/Microsoft.Blazor.DevHost/Server/Program.cs b/src/Microsoft.Blazor.DevHost/Server/Program.cs new file mode 100644 index 0000000000..b174a02e1a --- /dev/null +++ b/src/Microsoft.Blazor.DevHost/Server/Program.cs @@ -0,0 +1,21 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; + +namespace Microsoft.Blazor.DevHost.Server +{ + internal class Program + { + public static void Main(string[] args) + { + BuildWebHost(args).Run(); + } + + public static IWebHost BuildWebHost(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup() + .Build(); + } +} diff --git a/src/Microsoft.Blazor.DevHost/Server/Startup.cs b/src/Microsoft.Blazor.DevHost/Server/Startup.cs new file mode 100644 index 0000000000..fb87f18fc4 --- /dev/null +++ b/src/Microsoft.Blazor.DevHost/Server/Startup.cs @@ -0,0 +1,24 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.Blazor.DevHost.Server +{ + internal class Startup + { + public void ConfigureServices(IServiceCollection services) + { + services.AddRouting(); + } + + public void Configure(IApplicationBuilder app) + { + app.UseDeveloperExceptionPage(); + app.UseDefaultFiles(); + app.UseStaticFiles(); + app.UseBlazor(); + } + } +}