diff --git a/RazorViewCompilation.sln b/RazorViewCompilation.sln index 73a67c64d4..04edc277a6 100644 --- a/RazorViewCompilation.sln +++ b/RazorViewCompilation.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26118.1 +VisualStudioVersion = 15.0.26123.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation", "src\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.csproj", "{4339FC9B-AEC6-442A-B413-A41555ED76C7}" EndProject @@ -24,6 +24,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{87FEE984 build\common.props = build\common.props EndProjectSection EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation-x86", "pack\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation-x86.csproj", "{9F47A520-7DAB-409D-81C8-AD351562A1A5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -69,6 +71,18 @@ Global {E0D75B4E-839F-4F80-9B1F-B33F616BCC5F}.Release|x64.Build.0 = Release|x64 {E0D75B4E-839F-4F80-9B1F-B33F616BCC5F}.Release|x86.ActiveCfg = Release|x86 {E0D75B4E-839F-4F80-9B1F-B33F616BCC5F}.Release|x86.Build.0 = Release|x86 + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Debug|x64.ActiveCfg = Debug|x64 + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Debug|x64.Build.0 = Debug|x64 + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Debug|x86.ActiveCfg = Debug|x86 + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Debug|x86.Build.0 = Debug|x86 + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Release|Any CPU.Build.0 = Release|Any CPU + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Release|x64.ActiveCfg = Release|x64 + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Release|x64.Build.0 = Release|x64 + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Release|x86.ActiveCfg = Release|x86 + {9F47A520-7DAB-409D-81C8-AD351562A1A5}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -77,5 +91,6 @@ Global {4339FC9B-AEC6-442A-B413-A41555ED76C7} = {02F7AA35-91AF-491E-9F0E-03CFAF86C720} {46C9A4B2-8B1C-451B-B670-C194901D66AC} = {0398AFFF-505E-4283-89DA-BBD9D28B53DB} {E0D75B4E-839F-4F80-9B1F-B33F616BCC5F} = {0398AFFF-505E-4283-89DA-BBD9D28B53DB} + {9F47A520-7DAB-409D-81C8-AD351562A1A5} = {02F7AA35-91AF-491E-9F0E-03CFAF86C720} EndGlobalSection EndGlobal diff --git a/pack/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation-x86.csproj b/pack/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation-x86.csproj new file mode 100644 index 0000000000..05ad7af468 --- /dev/null +++ b/pack/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation-x86.csproj @@ -0,0 +1,20 @@ + + + + Build-time references required to enable Razor view compilation as part of building the application. + net451 + win7-x86 + exe + ..\src\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.csproj b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.csproj index d5d4740ae6..3c397e3d1d 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.csproj +++ b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.csproj @@ -1,29 +1,28 @@ - - - - Build-time references required to enable Razor view compilation as part of building the application. - netcoreapp1.1;net451 - win7-x64 - cshtml;razor;compilation;precompilation;aspnetcore - true - exe - - - build - - - - - - - - - - - - - - - - + + + + Build-time references required to enable Razor view compilation as part of building the application. + netcoreapp1.1;net451 + win7-x64 + cshtml;razor;compilation;precompilation;aspnetcore + true + exe + ..\..\pack\ + + build + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Program.cs b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Program.cs index 5a2232444b..623f661e3f 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Program.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Program.cs @@ -2,8 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Linq; -using System.Reflection; using Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal; namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/build/net451/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/build/net451/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets index 1dc1bbf2b3..032406f597 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/build/net451/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets +++ b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/build/net451/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets @@ -1,7 +1,8 @@ - - $(OutputPath)$(MSBuildThisFileName).exe + + $(OutputPath)$(MSBuildThisFileName)-x86.exe + $(OutputPath)$(MSBuildThisFileName).exe - + + $(OutputPath)$(MSBuildThisFileName)-x86.exe.config + + + $(OutputPath)$(MSBuildThisFileName)-x86.exe + + + + + $(OutputPath)$(MSBuildThisFileName).exe.config - $(MvcRazorRunCommand) + $(OutputPath)$(MSBuildThisFileName).exe diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/Resources/SimpleAppX86DesktopOnly.Home.Index.txt b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/Resources/SimpleAppX86DesktopOnly.Home.Index.txt new file mode 100644 index 0000000000..50c970046c --- /dev/null +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/Resources/SimpleAppX86DesktopOnly.Home.Index.txt @@ -0,0 +1 @@ +AspNetCore._Views_Home_Index_cshtml, SimpleAppX86DesktopOnly.PrecompiledViews, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null \ No newline at end of file diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppX86DesktopOnlyTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppX86DesktopOnlyTest.cs new file mode 100644 index 0000000000..014751bfd5 --- /dev/null +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppX86DesktopOnlyTest.cs @@ -0,0 +1,48 @@ +// 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.Threading.Tasks; +using Microsoft.AspNetCore.Server.IntegrationTesting; +using Microsoft.AspNetCore.Testing.xunit; +using Xunit; + +namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation +{ + public class SimpleAppX86DesktopOnlyTest : IClassFixture + { + public SimpleAppX86DesktopOnlyTest(SimpleAppX86DesktopOnlyFixture fixture) + { + Fixture = fixture; + } + + public ApplicationTestFixture Fixture { get; } + + [ConditionalFact] + [OSSkipCondition(OperatingSystems.Linux)] + [OSSkipCondition(OperatingSystems.MacOSX)] + public async Task Precompilation_WorksForSimpleApps() + { + // Arrange + using (var deployer = Fixture.CreateDeployment(RuntimeFlavor.Clr)) + { + var deploymentResult = deployer.Deploy(); + + // Act + var response = await Fixture.HttpClient.GetStringWithRetryAsync( + deploymentResult.ApplicationBaseUri, + Fixture.Logger); + + // Assert + TestEmbeddedResource.AssertContent("SimpleAppX86DesktopOnly.Home.Index.txt", response); + } + } + + public class SimpleAppX86DesktopOnlyFixture : ApplicationTestFixture + { + public SimpleAppX86DesktopOnlyFixture() + : base("SimpleAppX86DesktopOnly") + { + } + } + } +} diff --git a/testapps/SimpleAppX86DesktopOnly/Controllers/HomeController.cs b/testapps/SimpleAppX86DesktopOnly/Controllers/HomeController.cs new file mode 100644 index 0000000000..0b44851019 --- /dev/null +++ b/testapps/SimpleAppX86DesktopOnly/Controllers/HomeController.cs @@ -0,0 +1,9 @@ +using Microsoft.AspNetCore.Mvc; + +namespace SimpleApp.Controllers +{ + public class HomeController : Controller + { + public IActionResult Index() => View(); + } +} diff --git a/testapps/SimpleAppX86DesktopOnly/Program.cs b/testapps/SimpleAppX86DesktopOnly/Program.cs new file mode 100644 index 0000000000..6ed39c5e32 --- /dev/null +++ b/testapps/SimpleAppX86DesktopOnly/Program.cs @@ -0,0 +1,26 @@ +using System.IO; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; + +namespace SimpleApp +{ + public class Program + { + public static void Main(string[] args) + { + var config = new ConfigurationBuilder() + .AddCommandLine(args) + .AddEnvironmentVariables(prefix: "ASPNETCORE_") + .Build(); + + var host = new WebHostBuilder() + .UseConfiguration(config) + .UseKestrel() + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseStartup() + .Build(); + + host.Run(); + } + } +} diff --git a/testapps/SimpleAppX86DesktopOnly/SimpleAppX86DesktopOnly.csproj b/testapps/SimpleAppX86DesktopOnly/SimpleAppX86DesktopOnly.csproj new file mode 100644 index 0000000000..56dd3cab85 --- /dev/null +++ b/testapps/SimpleAppX86DesktopOnly/SimpleAppX86DesktopOnly.csproj @@ -0,0 +1,21 @@ + + + + net451 + win7-x86 + true + Exe + true + + + + + + 1.1.0-* + All + + + + + + diff --git a/testapps/SimpleAppX86DesktopOnly/Startup.cs b/testapps/SimpleAppX86DesktopOnly/Startup.cs new file mode 100644 index 0000000000..461873a890 --- /dev/null +++ b/testapps/SimpleAppX86DesktopOnly/Startup.cs @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace SimpleApp +{ + public class Startup + { + public void ConfigureServices(IServiceCollection services) + { + // Add framework services. + services.AddMvc(); + } + + public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) + { + loggerFactory.AddConsole(); + app.UseMvc(routes => + { + routes.MapRoute( + name: "default", + template: "{controller=Home}/{action=Index}/{id?}"); + }); + } + } +} diff --git a/testapps/SimpleAppX86DesktopOnly/Views/Home/Index.cshtml b/testapps/SimpleAppX86DesktopOnly/Views/Home/Index.cshtml new file mode 100644 index 0000000000..096681fc55 --- /dev/null +++ b/testapps/SimpleAppX86DesktopOnly/Views/Home/Index.cshtml @@ -0,0 +1 @@ +@GetType().AssemblyQualifiedName \ No newline at end of file