diff --git a/src/MvcPrecompilation/Directory.Build.props b/src/MvcPrecompilation/Directory.Build.props index 64f6af34d3..10676de560 100644 --- a/src/MvcPrecompilation/Directory.Build.props +++ b/src/MvcPrecompilation/Directory.Build.props @@ -14,7 +14,6 @@ $(MSBuildThisFileDirectory) $(MSBuildThisFileDirectory)build\Key.snk true - true true diff --git a/src/MvcPrecompilation/Directory.Build.targets b/src/MvcPrecompilation/Directory.Build.targets index 53b3f6e1da..78626b773e 100644 --- a/src/MvcPrecompilation/Directory.Build.targets +++ b/src/MvcPrecompilation/Directory.Build.targets @@ -1,7 +1,10 @@ - + $(MicrosoftNETCoreApp20PackageVersion) $(MicrosoftNETCoreApp21PackageVersion) + $(MicrosoftNETCoreApp22PackageVersion) $(NETStandardLibrary20PackageVersion) + + 99.9 diff --git a/src/MvcPrecompilation/RazorViewCompilation.sln b/src/MvcPrecompilation/RazorViewCompilation.sln index 3e35780944..83963166a3 100644 --- a/src/MvcPrecompilation/RazorViewCompilation.sln +++ b/src/MvcPrecompilation/RazorViewCompilation.sln @@ -1,4 +1,4 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 +Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.27130.2036 MinimumVisualStudioVersion = 15.0.26730.03 @@ -46,8 +46,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StrongNamedApp", "testapps\ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApplicationWithParseErrors", "testapps\ApplicationWithParseErrors\ApplicationWithParseErrors.csproj", "{AF647059-B86B-46DD-9559-E1324A39B148}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApplicationUsingRelativePaths", "testapps\ApplicationUsingRelativePaths\ApplicationUsingRelativePaths.csproj", "{0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApplicationWithConfigureMvc", "testapps\ApplicationWithConfigureMvc\ApplicationWithConfigureMvc.csproj", "{559FBB83-40BC-47AF-A224-312CF8E3629B}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApplicationWithCustomInputFiles", "testapps\ApplicationWithCustomInputFiles\ApplicationWithCustomInputFiles.csproj", "{8F73A290-BCE1-461A-9970-397FFBFCC902}" @@ -177,18 +175,6 @@ Global {AF647059-B86B-46DD-9559-E1324A39B148}.Release|x64.Build.0 = Release|Any CPU {AF647059-B86B-46DD-9559-E1324A39B148}.Release|x86.ActiveCfg = Release|Any CPU {AF647059-B86B-46DD-9559-E1324A39B148}.Release|x86.Build.0 = Release|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Debug|x64.ActiveCfg = Debug|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Debug|x64.Build.0 = Debug|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Debug|x86.ActiveCfg = Debug|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Debug|x86.Build.0 = Debug|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Release|Any CPU.Build.0 = Release|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Release|x64.ActiveCfg = Release|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Release|x64.Build.0 = Release|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Release|x86.ActiveCfg = Release|Any CPU - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8}.Release|x86.Build.0 = Release|Any CPU {559FBB83-40BC-47AF-A224-312CF8E3629B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {559FBB83-40BC-47AF-A224-312CF8E3629B}.Debug|Any CPU.Build.0 = Debug|Any CPU {559FBB83-40BC-47AF-A224-312CF8E3629B}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -310,7 +296,6 @@ Global {7EFC460A-8BAA-4538-8EBE-0B3BB6101E94} = {0DC7C88C-E3DB-46DF-B47E-AC5ECB2A16B7} {87C6A03D-1655-4D1C-82E5-8F553BF4096D} = {0DC7C88C-E3DB-46DF-B47E-AC5ECB2A16B7} {AF647059-B86B-46DD-9559-E1324A39B148} = {0DC7C88C-E3DB-46DF-B47E-AC5ECB2A16B7} - {0B512D79-AA53-4C97-91B3-B0F8B2CA16B8} = {0DC7C88C-E3DB-46DF-B47E-AC5ECB2A16B7} {559FBB83-40BC-47AF-A224-312CF8E3629B} = {0DC7C88C-E3DB-46DF-B47E-AC5ECB2A16B7} {8F73A290-BCE1-461A-9970-397FFBFCC902} = {0DC7C88C-E3DB-46DF-B47E-AC5ECB2A16B7} {196EF313-71CB-47A9-A77D-AACAF62881A1} = {0DC7C88C-E3DB-46DF-B47E-AC5ECB2A16B7} diff --git a/src/MvcPrecompilation/build/dependencies.props b/src/MvcPrecompilation/build/dependencies.props index b37254d78f..73061aad9f 100644 --- a/src/MvcPrecompilation/build/dependencies.props +++ b/src/MvcPrecompilation/build/dependencies.props @@ -2,38 +2,32 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - 2.1.3-rtm-15802 + + 2.2.0-preview1-20180928.5 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 + 0.6.0-preview3-35359 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 15.6.82 - 2.0.0 - 2.1.2 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 + 2.2.0-preview3-35359 + 2.0.9 + 2.1.3 + 2.2.0-preview3-26927-02 + 2.2.0-preview3-35359 15.6.1 2.0.3 2.3.1 - 2.4.0-beta.1.build3945 + 2.4.0 - - - - - - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 0.5.1 - 2.1.2 - 2.1.0 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - 2.1.1 - - \ No newline at end of file + + diff --git a/src/MvcPrecompilation/build/repo.props b/src/MvcPrecompilation/build/repo.props index dab1601c88..f1fe24dd27 100644 --- a/src/MvcPrecompilation/build/repo.props +++ b/src/MvcPrecompilation/build/repo.props @@ -4,12 +4,13 @@ Internal.AspNetCore.Universe.Lineup - 2.1.0-rc1-* + 2.2.0-* https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json + diff --git a/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/PrecompileRunCommand.cs b/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/PrecompileRunCommand.cs index 5c9b8a8a39..3203d8d39b 100644 --- a/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/PrecompileRunCommand.cs +++ b/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/PrecompileRunCommand.cs @@ -179,7 +179,9 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal // Post process the compilation - run ExpressionRewritter and any user specified callbacks. compilation = ExpressionRewriter.Rewrite(compilation); var compilationContext = new RoslynCompilationContext(compilation); +#pragma warning disable CS0618 // Type or member is obsolete MvcServiceProvider.ViewEngineOptions.CompilationCallback(compilationContext); +#pragma warning restore CS0618 // Type or member is obsolete compilation = AssemblyMetadataGenerator.AddAssemblyMetadata( compiler, compilationContext.Compilation, diff --git a/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.csproj b/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.csproj index d62970e4ed..9574c695d3 100644 --- a/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.csproj +++ b/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.csproj @@ -13,15 +13,6 @@ $(MSBuildProjectName).nuspec - - win7-x86;win7-x64 - x86 - $(AssemblyName)-$(PlatformTarget) - false - bin\$(Configuration)\net461\win7-$(PlatformTarget) - obj\$(Configuration)\net461\win7-$(PlatformTarget) - - @@ -31,22 +22,41 @@ - + + + + + + + + + + + + + + + TargetFramework=$(TargetFramework); + Platform=x86; + BuildNumber=$(BuildNumber); + OutputPath=$(OutputPath); + TargetName=$(TargetName)-x86" /> - + true + + unknown + id=$(PackageId); version=$(PackageVersion); @@ -68,10 +78,10 @@ TaskBinary=$(TasksProjectDirectory)bin\$(Configuration)\netstandard2.0\$(AssemblyName).Tasks.dll; TaskSymbol=$(TasksProjectDirectory)bin\$(Configuration)\netstandard2.0\$(AssemblyName).Tasks.pdb; - OutputExeX86=$(OutputPath)net461\win7-x86\$(AssemblyName)-x86.exe; - OutputExeSymbolX86=$(OutputPath)net461\win7-x86\$(AssemblyName)-x86.pdb; - OutputExeX64=$(OutputPath)net461\win7-x64\$(AssemblyName)-x64.exe; - OutputExeSymbolX64=$(OutputPath)net461\win7-x64\$(AssemblyName)-x64.pdb; + OutputExeX86=$(OutputPath)net461\$(AssemblyName)-x86.exe; + OutputExeSymbolX86=$(OutputPath)net461\$(AssemblyName)-x86.pdb; + OutputExeAnyCPU=$(OutputPath)net461\$(AssemblyName).exe; + OutputExeSymbolAnyCPU=$(OutputPath)net461\$(AssemblyName).pdb; diff --git a/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.nuspec b/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.nuspec index 1e1e6bbdf8..f687c38c61 100644 --- a/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.nuspec +++ b/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.nuspec @@ -26,13 +26,17 @@ - - + + + + + + + + + + - - - - diff --git a/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/build/netstandard2.0/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets b/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/build/netstandard2.0/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets index 35c2d5d47b..7ce2043073 100644 --- a/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/build/netstandard2.0/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets +++ b/src/MvcPrecompilation/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/build/netstandard2.0/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets @@ -51,7 +51,8 @@ dotnet - <_MvcViewCompilationBinaryPath Condition="'$(_MvcViewCompilationBinaryPath)'==''">$(MSBuildThisFileDirectory)$(MSBuildThisFileName).dll + <_MvcViewCompilationBinariesDir Condition="'$(_MvcViewCompilationBinariesDir)' == ''">$(MSBuildThisFileDirectory) + <_MvcViewCompilationBinaryPath>$(_MvcViewCompilationBinariesDir)netcoreapp2.0\$(MSBuildThisFileName).dll "$(MvcRazorRunCommand)" exec $(ExecArgs) --runtimeconfig "$(ProjectRuntimeConfigFilePath)" @@ -79,17 +80,19 @@ Targets="Build;MvcRazorPrecompile" /> + + + <_MvcViewCompilationBinariesDir Condition="'$(_MvcViewCompilationBinariesDir)' == ''">$(MSBuildThisFileDirectory) + + <_MvcViewCompilationBinaryPath Condition="'$(PlatformTarget)'=='x86'">$(_MvcViewCompilationBinariesDir)net461\$(MSBuildThisFileName)-x86.exe + <_MvcViewCompilationBinaryPath Condition="'$(PlatformTarget)'!='x86'">$(_MvcViewCompilationBinariesDir)net461\$(MSBuildThisFileName).exe + + + - - - <_MvcViewCompilationBinaryPath Condition="'$(PlatformTarget)'=='x86'">$(MSBuildThisFileDirectory)$(MSBuildThisFileName)-x86.exe - - - <_MvcViewCompilationBinaryPath Condition="'$(_MvcViewCompilationBinaryPath)'==''">$(MSBuildThisFileDirectory)$(MSBuildThisFileName)-x64.exe - + Condition="'$(MvcRazorCompileOnPublish)'=='true' AND '$(ResolvedRazorCompileToolset)'=='PrecompilationTool' AND '$(TargetFrameworkIdentifier)'=='.NETFramework'"> @@ -98,7 +101,7 @@ @@ -165,11 +168,11 @@ Name="_MvcRazorPrecompileOnPublish" DependsOnTargets="MvcRazorPrecompile" AfterTargets="PrepareForPublish" - Condition="'$(ResolvedRazorCompileToolset)'=='PrecompilationTool'and '$(MvcRazorCompileOnPublish)'=='true'" /> + Condition="'$(ResolvedRazorCompileToolset)'=='PrecompilationTool' and '$(MvcRazorCompileOnPublish)'=='true'" /> + Condition="'$(ResolvedRazorCompileToolset)'=='PrecompilationTool' and '$(MvcRazorCompileOnPublish)'=='true'"> <_MvcRazorOutputPdbFullPath>$([System.IO.Path]::ChangeExtension('$(_MvcRazorOutputFullPath)', '.pdb')) diff --git a/src/MvcPrecompilation/test/Directory.Build.props b/src/MvcPrecompilation/test/Directory.Build.props index 7ec143f84d..bf1f6628de 100644 --- a/src/MvcPrecompilation/test/Directory.Build.props +++ b/src/MvcPrecompilation/test/Directory.Build.props @@ -1,10 +1,10 @@ - + - netcoreapp2.1 + netcoreapp2.2 $(DeveloperBuildTestTfms) - netcoreapp2.1;netcoreapp2.0 + $(StandardTestTfms);net461 diff --git a/src/MvcPrecompilation/test/FunctionalTests/CoreCLRTests/CoreCLRApplicationTestFixture.cs b/src/MvcPrecompilation/test/FunctionalTests/CoreCLRTests/CoreCLRApplicationTestFixture.cs index d429b08de1..8deadfcef7 100644 --- a/src/MvcPrecompilation/test/FunctionalTests/CoreCLRTests/CoreCLRApplicationTestFixture.cs +++ b/src/MvcPrecompilation/test/FunctionalTests/CoreCLRTests/CoreCLRApplicationTestFixture.cs @@ -8,10 +8,8 @@ namespace FunctionalTests public class CoreCLRApplicationTestFixture : ApplicationTestFixture { private const string TargetFramework = -#if NETCOREAPP2_0 - "netcoreapp2.0"; -#elif NETCOREAPP2_1 - "netcoreapp2.1"; +#if NETCOREAPP2_2 + "netcoreapp2.2"; #else #error Target frameworks need to be updated #endif diff --git a/src/MvcPrecompilation/test/FunctionalTests/CoreCLRTests/SimpleAppTest_CoreCLR.cs b/src/MvcPrecompilation/test/FunctionalTests/CoreCLRTests/SimpleAppTest_CoreCLR.cs index 30ecf38d36..18e17b588e 100644 --- a/src/MvcPrecompilation/test/FunctionalTests/CoreCLRTests/SimpleAppTest_CoreCLR.cs +++ b/src/MvcPrecompilation/test/FunctionalTests/CoreCLRTests/SimpleAppTest_CoreCLR.cs @@ -1,7 +1,6 @@ // 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.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging.Testing; using Xunit; diff --git a/src/MvcPrecompilation/test/FunctionalTests/FunctionalTests.csproj b/src/MvcPrecompilation/test/FunctionalTests/FunctionalTests.csproj index 93409efa46..a0c5f23b91 100644 --- a/src/MvcPrecompilation/test/FunctionalTests/FunctionalTests.csproj +++ b/src/MvcPrecompilation/test/FunctionalTests/FunctionalTests.csproj @@ -6,15 +6,16 @@ $(DefineConstants);__remove_this_to__GENERATE_BASELINES $(DefineConstants);GENERATE_BASELINES false - false false + + win7-x64 - + @@ -32,7 +33,6 @@ - diff --git a/src/MvcPrecompilation/test/FunctionalTests/Infrastructure/ApplicationTestFixture.cs b/src/MvcPrecompilation/test/FunctionalTests/Infrastructure/ApplicationTestFixture.cs index 56e988e05f..698a598593 100644 --- a/src/MvcPrecompilation/test/FunctionalTests/Infrastructure/ApplicationTestFixture.cs +++ b/src/MvcPrecompilation/test/FunctionalTests/Infrastructure/ApplicationTestFixture.cs @@ -3,9 +3,12 @@ using System; using System.Collections.Generic; +using System.Diagnostics; +using System.IO; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Server.IntegrationTesting; +using Microsoft.AspNetCore.Testing; using Microsoft.Extensions.Logging; namespace FunctionalTests @@ -13,28 +16,44 @@ namespace FunctionalTests public abstract class ApplicationTestFixture : IDisposable { private const string DotnetCLITelemetryOptOut = "DOTNET_CLI_TELEMETRY_OPTOUT"; - private static readonly SemaphoreSlim _deploymentLock = new SemaphoreSlim(initialCount: 1); + private static readonly string SolutionDirectory; + private Task _deploymentTask; - private IApplicationDeployer _deployer; + private ApplicationDeployer _deployer; + + static ApplicationTestFixture() + { + SolutionDirectory = TestPathUtilities.GetSolutionRootDirectory("RazorViewCompilation"); + if (!SolutionDirectory.EndsWith(Path.DirectorySeparatorChar.ToString())) + { + SolutionDirectory += Path.DirectorySeparatorChar; + } + } protected ApplicationTestFixture(string applicationName, string applicationPath) { ApplicationName = applicationName; ApplicationPath = applicationPath ?? ApplicationPaths.GetTestAppDirectory(applicationName); + WorkingDirectory = Path.Combine(Path.GetTempPath(), "PrecompilationTool", Path.GetRandomFileName()); + TestProjectDirectory = Path.Combine(WorkingDirectory, ApplicationName); } public string ApplicationName { get; } public string ApplicationPath { get; } + public string WorkingDirectory { get; } + + public string TestProjectDirectory { get; } + public bool PublishOnly { get; set; } protected abstract DeploymentParameters GetDeploymentParameters(); protected DeploymentParameters GetDeploymentParameters(RuntimeFlavor flavor, string targetFramework) - => GetDeploymentParameters(ApplicationPath, ApplicationName, flavor, targetFramework); + => GetDeploymentParameters(TestProjectDirectory, ApplicationName, flavor, targetFramework); - public static DeploymentParameters GetDeploymentParameters(string applicationPath, string applicationName, RuntimeFlavor flavor, string targetFramework) + private static DeploymentParameters GetDeploymentParameters(string applicationPath, string applicationName, RuntimeFlavor flavor, string targetFramework) { // This determines the configuration of the the test project and consequently the configuration the src projects are most likely built in. var projectConfiguration = @@ -53,16 +72,19 @@ namespace FunctionalTests RuntimeArchitecture.x64) { ApplicationName = applicationName, + ApplicationType = flavor == RuntimeFlavor.Clr ? ApplicationType.Standalone : ApplicationType.Portable, PublishApplicationBeforeDeployment = true, - Configuration = "Release", + Configuration = projectConfiguration, EnvironmentVariables = { new KeyValuePair(DotnetCLITelemetryOptOut, "1"), + new KeyValuePair("SolutionDirectory", SolutionDirectory), new KeyValuePair("SolutionConfiguration", projectConfiguration), }, PublishEnvironmentVariables = { new KeyValuePair(DotnetCLITelemetryOptOut, "1"), + new KeyValuePair("SolutionDirectory", SolutionDirectory), new KeyValuePair("SolutionConfiguration", projectConfiguration), }, TargetFramework = targetFramework, @@ -78,35 +100,89 @@ namespace FunctionalTests _deploymentTask.Result.HttpClient?.Dispose(); } + CleanupWorkingDirectory(); + _deployer?.Dispose(); } - public async Task CreateDeploymentAsync(ILoggerFactory loggerFactory) + public Task CreateDeploymentAsync(ILoggerFactory loggerFactory) { - try + if (_deploymentTask == null) { - await _deploymentLock.WaitAsync(TimeSpan.FromSeconds(10)); - if (_deploymentTask == null) - { - var deploymentParameters = GetDeploymentParameters(); - if (PublishOnly) - { - _deployer = new PublishOnlyDeployer(deploymentParameters, loggerFactory); - } - else - { - _deployer = ApplicationDeployerFactory.Create(deploymentParameters, loggerFactory); - } + _deploymentTask = CreateDeploymentAsyncCore(loggerFactory); + } - _deploymentTask = _deployer.DeployAsync(); + return _deploymentTask; + } + + protected virtual Task CreateDeploymentAsyncCore(ILoggerFactory loggerFactory) + { + CopyDirectory(new DirectoryInfo(ApplicationPath), new DirectoryInfo(TestProjectDirectory)); + + File.Copy(Path.Combine(SolutionDirectory, "global.json"), Path.Combine(TestProjectDirectory, "global.json")); + File.Copy(Path.Combine(ApplicationPath, "..", "Directory.Build.props"), Path.Combine(TestProjectDirectory, "Directory.Build.props")); + File.Copy(Path.Combine(ApplicationPath, "..", "Directory.Build.targets"), Path.Combine(TestProjectDirectory, "Directory.Build.targets")); + + var deploymentParameters = GetDeploymentParameters(); + if (PublishOnly) + { + _deployer = new PublishOnlyDeployer(deploymentParameters, loggerFactory); + } + else + { + _deployer = ApplicationDeployerFactory.Create(deploymentParameters, loggerFactory); + } + + return _deployer.DeployAsync(); + } + + public void CopyDirectory(DirectoryInfo source, DirectoryInfo destination, bool recursive = true) + { + // Recurse into subdirectories + foreach (var directory in source.EnumerateDirectories()) + { + if (directory.Name == "bin") + { + continue; + } + + var created = destination.CreateSubdirectory(directory.Name); + + // We only want to copy the restore artifacts from obj directory while ignoring in any configuration specific directories + CopyDirectory(directory, created, recursive: directory.Name != "obj"); + } + + foreach (var file in source.EnumerateFiles()) + { + file.CopyTo(Path.Combine(destination.FullName, file.Name)); + } + } + + private void CleanupWorkingDirectory() + { + var tries = 5; + var sleep = TimeSpan.FromSeconds(3); + + for (var i = 0; i < tries; i++) + { + try + { + if (Directory.Exists(WorkingDirectory)) + { + Directory.Delete(WorkingDirectory, recursive: true); + } + return; + } + catch when (i < tries - 1) + { + Console.WriteLine($"Failed to delete directory {TestProjectDirectory}, trying again."); + Thread.Sleep(sleep); + } + catch + { + // Do nothing } } - finally - { - _deploymentLock.Release(); - } - - return await _deploymentTask; } } } diff --git a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/ApplicationUsingRelativePaths.csproj b/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/ApplicationUsingRelativePaths.csproj deleted file mode 100644 index 91b6481522..0000000000 --- a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/ApplicationUsingRelativePaths.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - $(StandardTestAppTfms) - - true - - - - - - - - - - diff --git a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Controllers/HomeController.cs b/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Controllers/HomeController.cs deleted file mode 100644 index 33ac0b1682..0000000000 --- a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Controllers/HomeController.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Microsoft.AspNetCore.Mvc; - -namespace ApplicationUsingRelativePaths.Controllers -{ - public class HomeController : Controller - { - public IActionResult Index() - { - return View("Views/Home/Index.cshtml"); - } - - public IActionResult About() - { - ViewData["Message"] = "Your application description page."; - - return View(); - } - } -} diff --git a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Program.cs b/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Program.cs deleted file mode 100644 index 5d496db40e..0000000000 --- a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Program.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.IO; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; - -namespace ApplicationUsingRelativePaths -{ - 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/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Startup.cs b/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Startup.cs deleted file mode 100644 index 9f7dbdf562..0000000000 --- a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Startup.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - -namespace ApplicationUsingRelativePaths -{ - public class Startup - { - public void ConfigureServices(IServiceCollection services) - { - // Add framework services. - services.AddMvc(); - } - - public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) - { - loggerFactory.AddConsole(); - app.UseMvcWithDefaultRoute(); - } - } -} diff --git a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/Home/About.cshtml b/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/Home/About.cshtml deleted file mode 100644 index bbc0672575..0000000000 --- a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/Home/About.cshtml +++ /dev/null @@ -1,8 +0,0 @@ -@{ - Layout = "../Shared/_Layout.cshtml"; - ViewData["Title"] = "About"; -} -

@ViewData["Title"].

-

@ViewData["Message"]

- -

Use this area to provide additional information.

diff --git a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/Home/Index.cshtml b/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/Home/Index.cshtml deleted file mode 100644 index b2bf7cf3d1..0000000000 --- a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/Home/Index.cshtml +++ /dev/null @@ -1,6 +0,0 @@ -@{ - ViewData["Title"] = "Home Page"; -} - -@GetType().Assembly.FullName -Hello from Index! \ No newline at end of file diff --git a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/Shared/_Layout.cshtml b/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/Shared/_Layout.cshtml deleted file mode 100644 index 4c909415a4..0000000000 --- a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/Shared/_Layout.cshtml +++ /dev/null @@ -1,6 +0,0 @@ - - - - @RenderBody() - - \ No newline at end of file diff --git a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/_ViewImports.cshtml b/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/_ViewImports.cshtml deleted file mode 100644 index 64245a9c34..0000000000 --- a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/_ViewImports.cshtml +++ /dev/null @@ -1,2 +0,0 @@ -@using ApplicationUsingRelativePaths -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/_ViewStart.cshtml b/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/_ViewStart.cshtml deleted file mode 100644 index 1b4f3a0748..0000000000 --- a/src/MvcPrecompilation/testapps/ApplicationUsingRelativePaths/Views/_ViewStart.cshtml +++ /dev/null @@ -1,3 +0,0 @@ -@{ - Layout = "Shared/_Layout.cshtml"; -} diff --git a/src/MvcPrecompilation/testapps/ApplicationWithConfigureMvc/Startup.cs b/src/MvcPrecompilation/testapps/ApplicationWithConfigureMvc/Startup.cs index 19de8caa76..9c44e7a17d 100644 --- a/src/MvcPrecompilation/testapps/ApplicationWithConfigureMvc/Startup.cs +++ b/src/MvcPrecompilation/testapps/ApplicationWithConfigureMvc/Startup.cs @@ -9,6 +9,7 @@ namespace ApplicationWithConfigureStartup { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. var builder = services.AddMvc(); ConfigureMvc(builder); @@ -16,7 +17,6 @@ namespace ApplicationWithConfigureStartup public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvc(routes => { routes.MapRoute( @@ -29,8 +29,10 @@ namespace ApplicationWithConfigureStartup { builder.AddRazorOptions(options => { +#pragma warning disable CS0618 // Type or member is obsolete var callback = options.CompilationCallback; options.CompilationCallback = context => +#pragma warning restore CS0618 // Type or member is obsolete { callback(context); foreach (var tree in context.Compilation.SyntaxTrees) diff --git a/src/MvcPrecompilation/testapps/ApplicationWithCustomInputFiles/Startup.cs b/src/MvcPrecompilation/testapps/ApplicationWithCustomInputFiles/Startup.cs index d42b8dfad9..203395ded9 100644 --- a/src/MvcPrecompilation/testapps/ApplicationWithCustomInputFiles/Startup.cs +++ b/src/MvcPrecompilation/testapps/ApplicationWithCustomInputFiles/Startup.cs @@ -8,13 +8,13 @@ namespace ApplicationWithCustomInputFiles { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvc(routes => { routes.MapRoute( diff --git a/src/MvcPrecompilation/testapps/ApplicationWithParseErrors/Startup.cs b/src/MvcPrecompilation/testapps/ApplicationWithParseErrors/Startup.cs index b573e39a8c..8e2df21cc8 100644 --- a/src/MvcPrecompilation/testapps/ApplicationWithParseErrors/Startup.cs +++ b/src/MvcPrecompilation/testapps/ApplicationWithParseErrors/Startup.cs @@ -8,12 +8,12 @@ namespace ApplicationWithParseErrors { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvcWithDefaultRoute(); } } diff --git a/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkNeitherUsed/Startup.cs b/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkNeitherUsed/Startup.cs index 4b06309f6d..c7068b7faa 100644 --- a/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkNeitherUsed/Startup.cs +++ b/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkNeitherUsed/Startup.cs @@ -8,13 +8,13 @@ namespace ApplicationWithRazorSdkNeitherUsed { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvcWithDefaultRoute(); } } diff --git a/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkPrecompilationUsed/Startup.cs b/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkPrecompilationUsed/Startup.cs index 16c835e52d..d168b9394c 100644 --- a/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkPrecompilationUsed/Startup.cs +++ b/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkPrecompilationUsed/Startup.cs @@ -8,13 +8,13 @@ namespace ApplicationWithRazorSdkPrecompilationUsed { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvcWithDefaultRoute(); } } diff --git a/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkUsed/Startup.cs b/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkUsed/Startup.cs index 8c6e88ed12..49a97f8e40 100644 --- a/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkUsed/Startup.cs +++ b/src/MvcPrecompilation/testapps/ApplicationWithRazorSdkUsed/Startup.cs @@ -8,13 +8,13 @@ namespace ApplicationWithRazorSdkUsed { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvcWithDefaultRoute(); } } diff --git a/src/MvcPrecompilation/testapps/ApplicationWithTagHelpers/Startup.cs b/src/MvcPrecompilation/testapps/ApplicationWithTagHelpers/Startup.cs index 00a0fb6df9..48babe25f2 100644 --- a/src/MvcPrecompilation/testapps/ApplicationWithTagHelpers/Startup.cs +++ b/src/MvcPrecompilation/testapps/ApplicationWithTagHelpers/Startup.cs @@ -8,13 +8,13 @@ namespace ApplicationWithTagHelpers { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvc(routes => { routes.MapRoute( diff --git a/src/MvcPrecompilation/testapps/Directory.Build.props b/src/MvcPrecompilation/testapps/Directory.Build.props index 4f2b2a52d6..c8b985bfca 100644 --- a/src/MvcPrecompilation/testapps/Directory.Build.props +++ b/src/MvcPrecompilation/testapps/Directory.Build.props @@ -1,17 +1,23 @@ - + + $(MSBuildThisFileDirectory)..\ + + + - netcoreapp2.1 + netcoreapp2.2 $(DeveloperBuildTestAppTfms) - netcoreapp2.1;netcoreapp2.0 + netcoreapp2.2;netcoreapp2.0 $(StandardTestAppTfms);net461 + + + win7-x64 1.0.0 false - false diff --git a/src/MvcPrecompilation/testapps/Directory.Build.targets b/src/MvcPrecompilation/testapps/Directory.Build.targets index 4b805513d6..03b1ec5b64 100644 --- a/src/MvcPrecompilation/testapps/Directory.Build.targets +++ b/src/MvcPrecompilation/testapps/Directory.Build.targets @@ -1,23 +1,13 @@ - + - <_MvcViewCompilationAddDesktopReferences>false $(MvcRazorCompileOnPublish) $(Configuration) - <_MvcViewCompilationTasksPath>$(MSBuildThisFileDirectory)..\src\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tasks\bin\$(SolutionConfiguration)\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tasks.dll + <_MvcViewCompilationTasksPath>$(SolutionDirectory)src\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tasks\bin\$(SolutionConfiguration)\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Tasks.dll + <_MvcViewCompilationBinariesDir>$(SolutionDirectory)src\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation\bin\$(SolutionConfiguration)\ - - - - - <_MvcViewCompilationBinaryPath Condition="'$(TargetFramework)'!='net461'">$(MSBuildThisFileDirectory)..\src\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation\bin\$(SolutionConfiguration)\netcoreapp2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.dll - <_MvcViewCompilationBinaryPath Condition="'$(TargetFramework)'=='net461'">$(MSBuildThisFileDirectory)..\src\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation\bin\$(SolutionConfiguration)\net461\win7-x86\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation-x86.exe - - diff --git a/src/MvcPrecompilation/testapps/PublishWithEmbedViewSources/Startup.cs b/src/MvcPrecompilation/testapps/PublishWithEmbedViewSources/Startup.cs index c1e951b594..d7dee03fff 100644 --- a/src/MvcPrecompilation/testapps/PublishWithEmbedViewSources/Startup.cs +++ b/src/MvcPrecompilation/testapps/PublishWithEmbedViewSources/Startup.cs @@ -8,13 +8,13 @@ namespace PublishWithEmbedViewSources { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvc(routes => { routes.MapRoute( diff --git a/src/MvcPrecompilation/testapps/RazorPagesApp/Startup.cs b/src/MvcPrecompilation/testapps/RazorPagesApp/Startup.cs index 33964de1da..c90ccba906 100644 --- a/src/MvcPrecompilation/testapps/RazorPagesApp/Startup.cs +++ b/src/MvcPrecompilation/testapps/RazorPagesApp/Startup.cs @@ -10,6 +10,7 @@ namespace RazorPagesApp { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); var builder = services.AddMvc(); services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options => options.LoginPath = "/Login"); ConfigureMvc(builder); @@ -17,7 +18,6 @@ namespace RazorPagesApp public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseAuthentication(); app.UseMvc(); } diff --git a/src/MvcPrecompilation/testapps/SimpleApp/SimpleApp.csproj b/src/MvcPrecompilation/testapps/SimpleApp/SimpleApp.csproj index d484bc0298..f330f2386d 100644 --- a/src/MvcPrecompilation/testapps/SimpleApp/SimpleApp.csproj +++ b/src/MvcPrecompilation/testapps/SimpleApp/SimpleApp.csproj @@ -2,8 +2,6 @@ $(StandardTestAppTfms) - win7-x86;debian-x64 - true diff --git a/src/MvcPrecompilation/testapps/SimpleApp/Startup.cs b/src/MvcPrecompilation/testapps/SimpleApp/Startup.cs index 461873a890..abf9ec6423 100644 --- a/src/MvcPrecompilation/testapps/SimpleApp/Startup.cs +++ b/src/MvcPrecompilation/testapps/SimpleApp/Startup.cs @@ -8,13 +8,13 @@ namespace SimpleApp { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvc(routes => { routes.MapRoute( diff --git a/src/MvcPrecompilation/testapps/SimpleAppWithAssemblyRename/Startup.cs b/src/MvcPrecompilation/testapps/SimpleAppWithAssemblyRename/Startup.cs index fa29d5b735..4492a3912b 100644 --- a/src/MvcPrecompilation/testapps/SimpleAppWithAssemblyRename/Startup.cs +++ b/src/MvcPrecompilation/testapps/SimpleAppWithAssemblyRename/Startup.cs @@ -8,13 +8,13 @@ namespace SimpleAppWithAssemblyRename { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvcWithDefaultRoute(); } } diff --git a/src/MvcPrecompilation/testapps/StrongNamedApp/Startup.cs b/src/MvcPrecompilation/testapps/StrongNamedApp/Startup.cs index a75f450846..f5dc4b4640 100644 --- a/src/MvcPrecompilation/testapps/StrongNamedApp/Startup.cs +++ b/src/MvcPrecompilation/testapps/StrongNamedApp/Startup.cs @@ -8,13 +8,13 @@ namespace StrongNamedApp { public void ConfigureServices(IServiceCollection services) { + services.AddLogging(loggingBuilder => loggingBuilder.AddConsole()); // Add framework services. services.AddMvc(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) { - loggerFactory.AddConsole(); app.UseMvc(routes => { routes.MapRoute( diff --git a/src/MvcPrecompilation/testapps/StrongNamedApp/StrongNamedApp.csproj b/src/MvcPrecompilation/testapps/StrongNamedApp/StrongNamedApp.csproj index b2d66d2953..f76a4cc9f4 100644 --- a/src/MvcPrecompilation/testapps/StrongNamedApp/StrongNamedApp.csproj +++ b/src/MvcPrecompilation/testapps/StrongNamedApp/StrongNamedApp.csproj @@ -3,7 +3,6 @@ $(StandardTestAppTfms) true - true true diff --git a/src/MvcPrecompilation/version.props b/src/MvcPrecompilation/version.props index 669c874829..4889a26987 100644 --- a/src/MvcPrecompilation/version.props +++ b/src/MvcPrecompilation/version.props @@ -1,6 +1,6 @@ - + - 2.1.1 + 2.2.0 rtm $(VersionPrefix) $(VersionPrefix)-$(VersionSuffix)-final