From 1a77aecf68ed709e0537dcf46f1e42a52899be16 Mon Sep 17 00:00:00 2001 From: Nate McMaster Date: Fri, 9 Feb 2018 10:08:09 -0800 Subject: [PATCH 1/7] Align NETStandard.Library version variable with Universe --- build/dependencies.props | 4 ++-- src/Directory.Build.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/dependencies.props b/build/dependencies.props index d724a33040..32429c1cb7 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -35,7 +35,7 @@ 1.3.7 1.0.1 4.7.49 - 2.0.0 + 2.0.1 10.0.1 1.1.92 4.5.0-preview1-26119-06 @@ -54,6 +54,6 @@ 2.3.1 2.3.1 - + diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 25771e8046..83534ef969 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -8,7 +8,7 @@ - + From 84bc74ea9f5efd29b7846cd07aa01b914e634796 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Thu, 8 Feb 2018 12:08:39 -0800 Subject: [PATCH 2/7] Move to RazorProjectFileSystem. - Changed all existing APIs to utilize `RazorProjectFileSystem`. This was possible because `RazorProjectFileSystem` inherits from RazorProject. - Renamed `FileSystemRazorProject` to `DefaultRazorProjectFileSystem`. - Renamed FileSystemRazorProjectItem` to `DefaultRazorProjectItem`. - Obsoleted `RazorProject.Create` #1828 --- .../CodeGenerationBenchmark.cs | 6 +-- ...ct.cs => DefaultRazorProjectFileSystem.cs} | 8 +-- ...jectItem.cs => DefaultRazorProjectItem.cs} | 6 +-- .../RazorProject.cs | 3 +- .../RazorProjectFileSystem.cs | 15 ++++-- .../RazorProjectItem.cs | 3 +- .../GenerateCommand.cs | 2 +- .../DefaultTemplateEngineFactoryService.cs | 4 +- src/RazorPageGenerator/Program.cs | 2 +- .../MvcRazorTemplateEngineTest.cs | 6 +-- .../MvcRazorTemplateEngineTest.cs | 6 +-- ...s => DefaultRazorProjectFileSystemTest.cs} | 52 +++++++++---------- ...Test.cs => DefaultRazorProjectItemTest.cs} | 16 +++--- .../RazorTemplateEngineIntegrationTest.cs | 16 +++--- .../RazorTemplateEngineTest.cs | 40 +++++++------- .../Home.cshtml | 0 .../Views/About/About.cshtml | 0 .../Views/Home/Index.cshtml | 0 .../Views/Home/Index.txt | 0 .../Views/Home/_ViewImports.cshtml | 0 .../Views/_ViewImports.cshtml | 0 .../_ViewImports.cshtml | 0 .../TestRazorProject.cs | 0 ...tVisualStudioRazorParserIntegrationTest.cs | 2 +- .../RazorSyntaxTreePartialParserTest.cs | 2 +- 25 files changed, 98 insertions(+), 91 deletions(-) rename src/Microsoft.AspNetCore.Razor.Language/{FileSystemRazorProject.cs => DefaultRazorProjectFileSystem.cs} (88%) rename src/Microsoft.AspNetCore.Razor.Language/{FileSystemRazorProjectItem.cs => DefaultRazorProjectItem.cs} (81%) rename test/Microsoft.AspNetCore.Razor.Language.Test/{FileSystemRazorProjectTest.cs => DefaultRazorProjectFileSystemTest.cs} (82%) rename test/Microsoft.AspNetCore.Razor.Language.Test/{FileSystemRazorProjectItemTest.cs => DefaultRazorProjectItemTest.cs} (70%) rename test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/{FileSystemRazorProject => DefaultRazorProjectFileSystem}/Home.cshtml (100%) rename test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/{FileSystemRazorProject => DefaultRazorProjectFileSystem}/Views/About/About.cshtml (100%) rename test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/{FileSystemRazorProject => DefaultRazorProjectFileSystem}/Views/Home/Index.cshtml (100%) rename test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/{FileSystemRazorProject => DefaultRazorProjectFileSystem}/Views/Home/Index.txt (100%) rename test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/{FileSystemRazorProject => DefaultRazorProjectFileSystem}/Views/Home/_ViewImports.cshtml (100%) rename test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/{FileSystemRazorProject => DefaultRazorProjectFileSystem}/Views/_ViewImports.cshtml (100%) rename test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/{FileSystemRazorProject => DefaultRazorProjectFileSystem}/_ViewImports.cshtml (100%) rename test/{Microsoft.AspNetCore.Razor.Test.Common/Language => Microsoft.AspNetCore.Razor.Language.Test}/TestRazorProject.cs (100%) diff --git a/benchmarks/Microsoft.AspNetCore.Razor.Performance/CodeGenerationBenchmark.cs b/benchmarks/Microsoft.AspNetCore.Razor.Performance/CodeGenerationBenchmark.cs index 33a95b9e65..b4320782e6 100644 --- a/benchmarks/Microsoft.AspNetCore.Razor.Performance/CodeGenerationBenchmark.cs +++ b/benchmarks/Microsoft.AspNetCore.Razor.Performance/CodeGenerationBenchmark.cs @@ -24,10 +24,10 @@ namespace Microsoft.AspNetCore.Razor.Performance var engine = RazorEngine.Create(b => { RazorExtensions.Register(b); }); - var project = RazorProject.Create(root.FullName); + var fileSystem = RazorProjectFileSystem.Create(root.FullName); - DesignTimeTemplateEngine = new MvcRazorTemplateEngine(RazorEngine.CreateDesignTime(b => { RazorExtensions.Register(b); }), project); - RuntimeTemplateEngine = new MvcRazorTemplateEngine(RazorEngine.Create(b => { RazorExtensions.Register(b); }), project); + DesignTimeTemplateEngine = new MvcRazorTemplateEngine(RazorEngine.CreateDesignTime(b => { RazorExtensions.Register(b); }), fileSystem); + RuntimeTemplateEngine = new MvcRazorTemplateEngine(RazorEngine.Create(b => { RazorExtensions.Register(b); }), fileSystem); var codeDocument = RuntimeTemplateEngine.CreateCodeDocument(Path.Combine(root.FullName, "MSN.cshtml")); diff --git a/src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProject.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectFileSystem.cs similarity index 88% rename from src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProject.cs rename to src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectFileSystem.cs index d6bfa5596a..2600ce5efe 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProject.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectFileSystem.cs @@ -8,9 +8,9 @@ using System.Linq; namespace Microsoft.AspNetCore.Razor.Language { - internal class FileSystemRazorProject : RazorProjectFileSystem + internal class DefaultRazorProjectFileSystem : RazorProjectFileSystem { - public FileSystemRazorProject(string root) + public DefaultRazorProjectFileSystem(string root) { if (string.IsNullOrEmpty(root)) { @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Razor.Language var relativePhysicalPath = file.FullName.Substring(absoluteBasePath.Length + 1); // Include leading separator var filePath = "/" + relativePhysicalPath.Replace(Path.DirectorySeparatorChar, '/'); - return new FileSystemRazorProjectItem(basePath, filePath, relativePhysicalPath, file); + return new DefaultRazorProjectItem(basePath, filePath, relativePhysicalPath, file); }); } @@ -53,7 +53,7 @@ namespace Microsoft.AspNetCore.Razor.Language var relativePhysicalPath = file.FullName.Substring(absoluteBasePath.Length + 1); // Include leading separator var filePath = "/" + relativePhysicalPath.Replace(Path.DirectorySeparatorChar, '/'); - return new FileSystemRazorProjectItem("/", filePath, relativePhysicalPath, new FileInfo(absolutePath)); + return new DefaultRazorProjectItem("/", filePath, relativePhysicalPath, new FileInfo(absolutePath)); } protected override string NormalizeAndEnsureValidPath(string path) diff --git a/src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProjectItem.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectItem.cs similarity index 81% rename from src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProjectItem.cs rename to src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectItem.cs index 210670d06a..5a3590a121 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProjectItem.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectItem.cs @@ -5,16 +5,16 @@ using System.IO; namespace Microsoft.AspNetCore.Razor.Language { - internal class FileSystemRazorProjectItem : RazorProjectItem + internal class DefaultRazorProjectItem : RazorProjectItem { /// - /// Initializes a new instance of . + /// Initializes a new instance of . /// /// The base path. /// The physical path of the base path. /// The path. /// The . - public FileSystemRazorProjectItem(string basePath, string filePath, string relativePhysicalPath, FileInfo file) + public DefaultRazorProjectItem(string basePath, string filePath, string relativePhysicalPath, FileInfo file) { BasePath = basePath; FilePath = filePath; diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProject.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProject.cs index 473e6382e1..74b772e142 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProject.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProject.cs @@ -129,9 +129,10 @@ namespace Microsoft.AspNetCore.Razor.Language /// /// The directory to root the file system at. /// A + [Obsolete("This method is obsolete and will be removed in a future version. Please use " + nameof(RazorProjectFileSystem) + "." + nameof(RazorProjectFileSystem.Create) + " instead.")] public static RazorProject Create(string rootDirectoryPath) { - return new FileSystemRazorProject(rootDirectoryPath); + return new DefaultRazorProjectFileSystem(rootDirectoryPath); } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectFileSystem.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectFileSystem.cs index 975b821ade..a95de255df 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectFileSystem.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectFileSystem.cs @@ -1,18 +1,25 @@ // 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 Microsoft.AspNetCore.Razor.Language { public abstract class RazorProjectFileSystem : RazorProject { /// - /// Create a Razor project based on a physical file system. + /// Create a Razor project file system based off of a root directory. /// /// The directory to root the file system at. - /// A - public static new RazorProjectFileSystem Create(string rootDirectoryPath) + /// A + public new static RazorProjectFileSystem Create(string rootDirectoryPath) { - return new FileSystemRazorProject(rootDirectoryPath); + if (string.IsNullOrEmpty(rootDirectoryPath)) + { + throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(rootDirectoryPath)); + } + + return new DefaultRazorProjectFileSystem(rootDirectoryPath); } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectItem.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectItem.cs index cadd00710c..6aecb94daa 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectItem.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectItem.cs @@ -1,14 +1,13 @@ // 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.Diagnostics; using System.IO; namespace Microsoft.AspNetCore.Razor.Language { /// - /// An item in . + /// An item in a . /// [DebuggerDisplay("{" + nameof(DebuggerToString) + "()}")] public abstract class RazorProjectItem diff --git a/src/Microsoft.AspNetCore.Razor.Tools/GenerateCommand.cs b/src/Microsoft.AspNetCore.Razor.Tools/GenerateCommand.cs index 9fdedccd93..fc0a876940 100644 --- a/src/Microsoft.AspNetCore.Razor.Tools/GenerateCommand.cs +++ b/src/Microsoft.AspNetCore.Razor.Tools/GenerateCommand.cs @@ -136,7 +136,7 @@ namespace Microsoft.AspNetCore.Razor.Tools var project = new VirtualRazorProjectFileSystem(); foreach (var item in inputItems) { - var projectItem = new FileSystemRazorProjectItem( + var projectItem = new DefaultRazorProjectItem( basePath: "/", filePath: item.FilePath, relativePhysicalPath: item.RelativePhysicalPath, diff --git a/src/Microsoft.VisualStudio.Editor.Razor/DefaultTemplateEngineFactoryService.cs b/src/Microsoft.VisualStudio.Editor.Razor/DefaultTemplateEngineFactoryService.cs index ab5518bb46..6c615077c7 100644 --- a/src/Microsoft.VisualStudio.Editor.Razor/DefaultTemplateEngineFactoryService.cs +++ b/src/Microsoft.VisualStudio.Editor.Razor/DefaultTemplateEngineFactoryService.cs @@ -60,7 +60,7 @@ namespace Microsoft.VisualStudio.Editor.Razor } }); - var templateEngine = new Mvc1_X.MvcRazorTemplateEngine(engine, RazorProject.Create(projectPath)); + var templateEngine = new Mvc1_X.MvcRazorTemplateEngine(engine, RazorProjectFileSystem.Create(projectPath)); templateEngine.Options.ImportsFileName = "_ViewImports.cshtml"; return templateEngine; } @@ -73,7 +73,7 @@ namespace Microsoft.VisualStudio.Editor.Razor MvcLatest.RazorExtensions.Register(b); }); - var templateEngine = new MvcLatest.MvcRazorTemplateEngine(engine, RazorProject.Create(projectPath)); + var templateEngine = new MvcLatest.MvcRazorTemplateEngine(engine, RazorProjectFileSystem.Create(projectPath)); templateEngine.Options.ImportsFileName = "_ViewImports.cshtml"; return templateEngine; } diff --git a/src/RazorPageGenerator/Program.cs b/src/RazorPageGenerator/Program.cs index 30081b1bc2..aecb2344dc 100644 --- a/src/RazorPageGenerator/Program.cs +++ b/src/RazorPageGenerator/Program.cs @@ -73,7 +73,7 @@ Examples: public static IList MainCore(RazorEngine razorEngine, string targetProjectDirectory) { var viewDirectories = Directory.EnumerateDirectories(targetProjectDirectory, "Views", SearchOption.AllDirectories); - var razorProject = RazorProject.Create(targetProjectDirectory); + var razorProject = RazorProjectFileSystem.Create(targetProjectDirectory); var templateEngine = new RazorTemplateEngine(razorEngine, razorProject); templateEngine.Options.DefaultImports = RazorSourceDocument.Create(@" @using System diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/MvcRazorTemplateEngineTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/MvcRazorTemplateEngineTest.cs index 6170065edf..58e440547e 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/MvcRazorTemplateEngineTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/MvcRazorTemplateEngineTest.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions }; var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; @@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions }; var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; @@ -70,7 +70,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions // Arrange var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/MvcRazorTemplateEngineTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/MvcRazorTemplateEngineTest.cs index 5ceff69208..c2378397a6 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/MvcRazorTemplateEngineTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/MvcRazorTemplateEngineTest.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X }; var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; @@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X }; var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; @@ -70,7 +70,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X // Arrange var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectFileSystemTest.cs similarity index 82% rename from test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectTest.cs rename to test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectFileSystemTest.cs index e2d471c8fd..addc55ebea 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectFileSystemTest.cs @@ -8,12 +8,12 @@ using Xunit; namespace Microsoft.AspNetCore.Razor.Language { - public class FileSystemRazorProjectTest + public class DefaultRazorProjectFileSystemTest { private static string TestFolder { get; } = Path.Combine( - TestProject.GetProjectDirectory(typeof(FileSystemRazorProjectTest)), - "TestFiles", - "FileSystemRazorProject"); + TestProject.GetProjectDirectory(typeof(DefaultRazorProjectFileSystemTest)), + "TestFiles", + "DefaultRazorProjectFileSystem"); [Theory] [InlineData(null)] @@ -21,20 +21,20 @@ namespace Microsoft.AspNetCore.Razor.Language public void NormalizeAndEnsureValidPath_ThrowsIfPathIsNullOrEmpty(string path) { // Arrange - var project = new TestFileSystemRazorProject("C:/some/test/path/root"); + var fileSystem = new TestRazorProjectFileSystem("C:/some/test/path/root"); // Act and Assert - ExceptionAssert.ThrowsArgumentNullOrEmptyString(() => project.NormalizeAndEnsureValidPath(path), "path"); + ExceptionAssert.ThrowsArgumentNullOrEmptyString(() => fileSystem.NormalizeAndEnsureValidPath(path), "path"); } [Fact] public void NormalizeAndEnsureValidPath_NormalizesToAbsolutePath() { // Arrange - var project = new TestFileSystemRazorProject("C:/some/test/path/root"); + var fileSystem = new TestRazorProjectFileSystem("C:/some/test/path/root"); // Act - var absolutePath = project.NormalizeAndEnsureValidPath("file.cshtml"); + var absolutePath = fileSystem.NormalizeAndEnsureValidPath("file.cshtml"); // Assert Assert.Equal("C:/some/test/path/root/file.cshtml", absolutePath); @@ -44,10 +44,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void NormalizeAndEnsureValidPath_NormalizesToAbsolutePathWithoutForwardSlash() { // Arrange - var project = new TestFileSystemRazorProject("C:/some/test/path/root"); + var fileSystem = new TestRazorProjectFileSystem("C:/some/test/path/root"); // Act - var absolutePath = project.NormalizeAndEnsureValidPath("/file.cshtml"); + var absolutePath = fileSystem.NormalizeAndEnsureValidPath("/file.cshtml"); // Assert Assert.Equal("C:/some/test/path/root/file.cshtml", absolutePath); @@ -57,10 +57,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void NormalizeAndEnsureValidPath_NormalizesToForwardSlashes() { // Arrange - var project = new TestFileSystemRazorProject(@"C:\some\test\path\root"); + var fileSystem = new TestRazorProjectFileSystem(@"C:\some\test\path\root"); // Act - var absolutePath = project.NormalizeAndEnsureValidPath(@"something\file.cshtml"); + var absolutePath = fileSystem.NormalizeAndEnsureValidPath(@"something\file.cshtml"); // Assert Assert.Equal("C:/some/test/path/root/something/file.cshtml", absolutePath); @@ -70,10 +70,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void EnumerateItems_DiscoversAllCshtmlFiles() { // Arrange - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var items = fileSystemProject.EnumerateItems("/"); + var items = fileSystem.EnumerateItems("/"); // Assert Assert.Collection( @@ -130,10 +130,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void EnumerateItems_DiscoversAllCshtmlFiles_UnderSpecifiedBasePath() { // Arrange - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var items = fileSystemProject.EnumerateItems("/Views"); + var items = fileSystem.EnumerateItems("/Views"); // Assert Assert.Collection( @@ -172,10 +172,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void EnumerateItems_ReturnsEmptySequence_WhenBasePathDoesNotExist() { // Arrange - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var items = fileSystemProject.EnumerateItems("/Does-Not-Exist"); + var items = fileSystem.EnumerateItems("/Does-Not-Exist"); // Assert Assert.Empty(items); @@ -185,10 +185,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void FindHierarchicalItems_FindsItemsWithMatchingNames() { // Arrange - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var items = fileSystemProject.FindHierarchicalItems("/Views/Home/Index.cshtml", "_ViewImports.cshtml"); + var items = fileSystem.FindHierarchicalItems("/Views/Home/Index.cshtml", "_ViewImports.cshtml"); // Assert Assert.Collection( @@ -224,10 +224,10 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var filePath = "/Views/About/About.cshtml"; - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var item = fileSystemProject.GetItem(filePath); + var item = fileSystem.GetItem(filePath); // Assert Assert.True(item.Exists); @@ -242,18 +242,18 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var path = "/NotFound.cshtml"; - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var item = fileSystemProject.GetItem(path); + var item = fileSystem.GetItem(path); // Assert Assert.False(item.Exists); } - private class TestFileSystemRazorProject : FileSystemRazorProject + private class TestRazorProjectFileSystem : DefaultRazorProjectFileSystem { - public TestFileSystemRazorProject(string root) : base(root) + public TestRazorProjectFileSystem(string root) : base(root) { } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectItemTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectItemTest.cs similarity index 70% rename from test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectItemTest.cs rename to test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectItemTest.cs index a5193f45f9..1fa4453bd3 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectItemTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectItemTest.cs @@ -6,21 +6,21 @@ using Xunit; namespace Microsoft.AspNetCore.Razor.Language { - public class FileSystemRazorProjectItemTest + public class DefaultRazorProjectItemTest { private static string TestFolder { get; } = Path.Combine( - TestProject.GetProjectDirectory(typeof(FileSystemRazorProjectItemTest)), - "TestFiles", - "FileSystemRazorProject"); + TestProject.GetProjectDirectory(typeof(DefaultRazorProjectItemTest)), + "TestFiles", + "DefaultRazorProjectFileSystem"); [Fact] - public void FileSystemRazorProjectItem_SetsProperties() + public void DefaultRazorProjectItem_SetsProperties() { // Arrange var fileInfo = new FileInfo(Path.Combine(TestFolder, "Home.cshtml")); // Act - var projectItem = new FileSystemRazorProjectItem("/", "/Home.cshtml", "Home.cshtml", fileInfo); + var projectItem = new DefaultRazorProjectItem("/", "/Home.cshtml", "Home.cshtml", fileInfo); // Assert Assert.Equal("/Home.cshtml", projectItem.FilePath); @@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Razor.Language var fileInfo = new FileInfo(Path.Combine(TestFolder, "Views", "FileDoesNotExist.cshtml")); // Act - var projectItem = new FileSystemRazorProjectItem("/Views", "/FileDoesNotExist.cshtml", Path.Combine("Views", "FileDoesNotExist.cshtml"), fileInfo); + var projectItem = new DefaultRazorProjectItem("/Views", "/FileDoesNotExist.cshtml", Path.Combine("Views", "FileDoesNotExist.cshtml"), fileInfo); // Assert Assert.False(projectItem.Exists); @@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var fileInfo = new FileInfo(Path.Combine(TestFolder, "Home.cshtml")); - var projectItem = new FileSystemRazorProjectItem("/", "/Home.cshtml", "Home.cshtml", fileInfo); + var projectItem = new DefaultRazorProjectItem("/", "/Home.cshtml", "Home.cshtml", fileInfo); // Act var stream = projectItem.Read(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/RazorTemplateEngineIntegrationTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/RazorTemplateEngineIntegrationTest.cs index 025ff5aa1f..ad26823b85 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/RazorTemplateEngineIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/RazorTemplateEngineIntegrationTest.cs @@ -12,12 +12,12 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests public void GenerateCodeWithDefaults() { // Arrange - var project = new FileSystemRazorProject(TestProjectRoot); + var fileSystem = new DefaultRazorProjectFileSystem(TestProjectRoot); var razorEngine = RazorEngine.Create(engine => { engine.Features.Add(new SuppressChecksumOptionsFeature()); }); - var templateEngine = new RazorTemplateEngine(razorEngine, project); + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem); // Act var cSharpDocument = templateEngine.GenerateCode($"{FileName}.cshtml"); @@ -30,14 +30,14 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests public void GenerateCodeWithBaseType() { // Arrange - var project = new FileSystemRazorProject(TestProjectRoot); + var fileSystem = new DefaultRazorProjectFileSystem(TestProjectRoot); var razorEngine = RazorEngine.Create(engine => { engine.Features.Add(new SuppressChecksumOptionsFeature()); engine.SetBaseType("MyBaseType"); }); - var templateEngine = new RazorTemplateEngine(razorEngine, project); + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem); // Act var cSharpDocument = templateEngine.GenerateCode($"{FileName}.cshtml"); @@ -50,7 +50,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests public void GenerateCodeWithConfigureClass() { // Arrange - var project = new FileSystemRazorProject(TestProjectRoot); + var fileSystem = new DefaultRazorProjectFileSystem(TestProjectRoot); var razorEngine = RazorEngine.Create(engine => { engine.Features.Add(new SuppressChecksumOptionsFeature()); @@ -70,7 +70,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests @class.BaseType = "CustomBaseType"; }); }); - var templateEngine = new RazorTemplateEngine(razorEngine, project); + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem); // Act var cSharpDocument = templateEngine.GenerateCode($"{FileName}.cshtml"); @@ -83,14 +83,14 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests public void GenerateCodeWithSetNamespace() { // Arrange - var project = new FileSystemRazorProject(TestProjectRoot); + var fileSystem = new DefaultRazorProjectFileSystem(TestProjectRoot); var razorEngine = RazorEngine.Create(engine => { engine.Features.Add(new SuppressChecksumOptionsFeature()); engine.SetNamespace("MyApp.Razor.Views"); }); - var templateEngine = new RazorTemplateEngine(razorEngine, project); + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem); // Act var cSharpDocument = templateEngine.GenerateCode($"{FileName}.cshtml"); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs index 5e757d9252..e77c5a05fa 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs @@ -15,16 +15,16 @@ namespace Microsoft.AspNetCore.Razor.Language public void GetImports_CanQueryInformationOnNonExistentFileWithoutImports() { // Arrange - var project = new TestRazorProject(); + var fileSystem = new TestRazorProjectFileSystem(); var razorEngine = RazorEngine.Create(); - var templateEngine = new RazorTemplateEngine(razorEngine, project) + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem) { Options = { ImportsFileName = "MyImport.cshtml" } }; - var projectItemToQuery = project.GetItem("/Views/Home/Index.cshtml"); + var projectItemToQuery = fileSystem.GetItem("/Views/Home/Index.cshtml"); // Act var imports = templateEngine.GetImports(projectItemToQuery); @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var path = "/Views/Home/MyImport.cshtml"; var projectItem = new TestRazorProjectItem(path); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { @@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void GenerateCode_ThrowsIfItemCannotBeFound() { // Arrange - var project = new TestRazorProject(new RazorProjectItem[] { }); + var project = new TestRazorProjectFileSystem(new RazorProjectItem[] { }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void SettingOptions_ThrowsIfValueIsNull() { // Arrange - var project = new TestRazorProject(new RazorProjectItem[] { }); + var project = new TestRazorProjectFileSystem(new RazorProjectItem[] { }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -92,7 +92,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var path = "/Views/Home/Index.cshtml"; var projectItem = new TestRazorProjectItem(path); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -110,7 +110,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var path = "/Views/Home/Index.cshtml"; - var project = new TestRazorProject(new RazorProjectItem[] { }); + var project = new TestRazorProjectFileSystem(new RazorProjectItem[] { }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -125,7 +125,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var path = "/Views/Home/Index.cshtml"; var projectItem = new TestRazorProjectItem(path); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -144,7 +144,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var path = "/Views/Home/Index.cshtml"; var projectItem = new TestRazorProjectItem(path); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -168,7 +168,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { @@ -192,7 +192,7 @@ namespace Microsoft.AspNetCore.Razor.Language var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); var import1 = new TestRazorProjectItem("/MyImport.cshtml"); var import2 = new TestRazorProjectItem("/Views/Home/MyImport.cshtml"); - var project = new TestRazorProject(new[] { import1, import2, projectItem }); + var project = new TestRazorProjectFileSystem(new[] { import1, import2, projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { @@ -218,7 +218,7 @@ namespace Microsoft.AspNetCore.Razor.Language var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); var import1 = new TestRazorProjectItem("/MyImport.cshtml"); var import2 = new TestRazorProjectItem("/Views/Home/MyImport.cshtml"); - var project = new TestRazorProject(new[] { import1, import2, projectItem }); + var project = new TestRazorProjectFileSystem(new[] { import1, import2, projectItem }); var razorEngine = RazorEngine.Create(); var defaultImport = RazorSourceDocument.ReadFrom(new MemoryStream(), "Default.cshtml"); var templateEngine = new RazorTemplateEngine(razorEngine, project) @@ -245,7 +245,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var defaultImport = RazorSourceDocument.ReadFrom(new MemoryStream(), "Default.cshtml"); var templateEngine = new RazorTemplateEngine(razorEngine, project) @@ -269,7 +269,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var expected = new[] { "/Views/Home/MyImport.cshtml", "/Views/MyImport.cshtml", "/MyImport.cshtml" }; - var project = new TestRazorProject(); + var project = new TestRazorProjectFileSystem(); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { @@ -293,9 +293,9 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var expected = new[] { "/Views/Home/MyImport.cshtml", "/Views/MyImport.cshtml", "/MyImport.cshtml" }; var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); - var project = new TestRazorProject(new[] { projectItem }); + var fileSystem = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); - var templateEngine = new RazorTemplateEngine(razorEngine, project) + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem) { Options = { @@ -316,11 +316,11 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var testFolder = Path.Combine( - TestProject.GetProjectDirectory(typeof(FileSystemRazorProjectTest)), + TestProject.GetProjectDirectory(typeof(DefaultRazorProjectFileSystemTest)), "TestFiles", - "FileSystemRazorProject"); + "DefaultRazorProjectFileSystem"); - var project = new FileSystemRazorProject(testFolder); + var project = new DefaultRazorProjectFileSystem(testFolder); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Home.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Home.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Home.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Home.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/About/About.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/About/About.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/About/About.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/About/About.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/Index.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/Index.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/Index.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/Index.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/Index.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/Index.txt similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/Index.txt rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/Index.txt diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/_ViewImports.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/_ViewImports.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/_ViewImports.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/_ViewImports.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/_ViewImports.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/_ViewImports.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/_ViewImports.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/_ViewImports.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/_ViewImports.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/_ViewImports.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/_ViewImports.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/_ViewImports.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProject.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/TestRazorProject.cs similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProject.cs rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestRazorProject.cs diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioRazorParserIntegrationTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioRazorParserIntegrationTest.cs index cb7df55d12..9b38140366 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioRazorParserIntegrationTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioRazorParserIntegrationTest.cs @@ -544,7 +544,7 @@ namespace Microsoft.VisualStudio.Editor.Razor var items = new List(); items.Add(new TestRazorProjectItem(path)); - var project = new TestRazorProject(items); + var project = new TestRazorProjectFileSystem(items); var templateEngine = new RazorTemplateEngine(engine, project); templateEngine.Options.DefaultImports = RazorSourceDocument.Create("@addTagHelper *, Test", "_TestImports.cshtml"); diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorSyntaxTreePartialParserTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorSyntaxTreePartialParserTest.cs index b82bf58c6b..074fa0e1be 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorSyntaxTreePartialParserTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorSyntaxTreePartialParserTest.cs @@ -599,7 +599,7 @@ namespace Microsoft.VisualStudio.Editor.Razor var items = new List(); items.Add(new TestRazorProjectItem(path)); - var project = new TestRazorProject(items); + var project = new TestRazorProjectFileSystem(items); var templateEngine = new RazorTemplateEngine(engine, project); templateEngine.Options.DefaultImports = RazorSourceDocument.Create("@addTagHelper *, Test", "_TestImports.cshtml"); From 0c6aadb897aa361fca573b2fc981f21365b186ee Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Fri, 9 Feb 2018 14:59:34 -0800 Subject: [PATCH 3/7] Add a test for design time builds #1846 This change adds a test to verify that Razor targets don't show up in design time builds when RazorCompileOnBuild=true We don't want to add a significant perf cost to design time builds since they affect project load. --- .../DesignTimeBuildIntegrationTest.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/DesignTimeBuildIntegrationTest.cs diff --git a/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/DesignTimeBuildIntegrationTest.cs b/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/DesignTimeBuildIntegrationTest.cs new file mode 100644 index 0000000000..6480149992 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/DesignTimeBuildIntegrationTest.cs @@ -0,0 +1,34 @@ +// 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 Xunit; + +namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests +{ + public class DesignTimeBuildIntegrationTest : MSBuildIntegrationTestBase + { + [Fact] + [InitializeTestProject("SimpleMvc")] + public async Task DesignTimeBuild_DoesNotRunRazorTargets() + { + // Using Compile here instead of CompileDesignTime because the latter is only defined when using + // the VS targets. This is a close enough simulation for an SDK project + var result = await DotnetMSBuild("Compile", "/p:RazorCompileOnBuild=true /p:DesignTimeBuild=true /clp:PerformanceSummary"); + + Assert.BuildPassed(result); + Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.dll"); + Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.pdb"); + Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.PrecompiledViews.dll"); + Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.PrecompiledViews.pdb"); + + // This target should be part of the design time build. + Assert.Contains("RazorGetAssemblyAttributes", result.Output); + + // We don't want to see the expensive Razor targets in the performance summary, since they shouldn't run + // during a design time build. + Assert.DoesNotContain("RazorCoreGenerate", result.Output); + Assert.DoesNotContain("RazorCoreCompile", result.Output); + } + } +} From 3375fc8b998e5e40d5080abd6f3c1cedd18892c9 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Fri, 9 Feb 2018 16:39:35 -0800 Subject: [PATCH 4/7] Change RazorProjectEngine to operate on RazorProjectItems. - Removed the `Process(string)` overload to make it extra clear that you must operate on project items. This way we also don't need to worry about the various formats of paths that can flow through the system. - Updated tests to use the new project item format. - Did a few formatting fixes on unrealted files. #2049 --- .../DefaultMvcImportFeature.cs | 12 ++++---- .../DefaultMvcImportFeature.cs | 12 ++++---- .../DefaultRazorImportFeature.cs | 2 +- .../DefaultRazorProjectEngine.cs | 23 ++++----------- .../IRazorImportFeature.cs | 2 +- .../RazorProjectEngine.cs | 4 +-- .../RazorProjectEngineFeatureBase.cs | 2 +- .../VirtualRazorProjectFileSystem.cs | 9 +++--- .../DefaultMvcImportFeatureTest.cs | 13 ++++----- .../DefaultMvcImportFeatureTest.cs | 13 ++++----- ...efaultRazorProjectEngineIntegrationTest.cs | 10 +++---- .../DefaultRazorProjectEngineTest.cs | 29 ------------------- 12 files changed, 42 insertions(+), 89 deletions(-) delete mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/DefaultMvcImportFeature.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/DefaultMvcImportFeature.cs index d630a70c72..055f306eb5 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/DefaultMvcImportFeature.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/DefaultMvcImportFeature.cs @@ -14,18 +14,18 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X { private const string ImportsFileName = "_ViewImports.cshtml"; - public IReadOnlyList GetImports(string sourceFilePath) + public IReadOnlyList GetImports(RazorProjectItem projectItem) { - if (string.IsNullOrEmpty(sourceFilePath)) + if (projectItem == null) { - throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpy, nameof(sourceFilePath)); + throw new ArgumentNullException(nameof(projectItem)); } var imports = new List(); AddDefaultDirectivesImport(imports); // We add hierarchical imports second so any default directive imports can be overridden. - AddHierarchicalImports(sourceFilePath, imports); + AddHierarchicalImports(projectItem, imports); return imports; } @@ -58,10 +58,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X } // Internal for testing - internal void AddHierarchicalImports(string sourceFilePath, List imports) + internal void AddHierarchicalImports(RazorProjectItem projectItem, List imports) { // We want items in descending order. FindHierarchicalItems returns items in ascending order. - var importProjectItems = ProjectEngine.FileSystem.FindHierarchicalItems(sourceFilePath, ImportsFileName).Reverse(); + var importProjectItems = ProjectEngine.FileSystem.FindHierarchicalItems(projectItem.FilePath, ImportsFileName).Reverse(); foreach (var importProjectItem in importProjectItems) { RazorSourceDocument importSourceDocument; diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/DefaultMvcImportFeature.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/DefaultMvcImportFeature.cs index 8cbf0f11a1..4852951e33 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/DefaultMvcImportFeature.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/DefaultMvcImportFeature.cs @@ -14,18 +14,18 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions { private const string ImportsFileName = "_ViewImports.cshtml"; - public IReadOnlyList GetImports(string sourceFilePath) + public IReadOnlyList GetImports(RazorProjectItem projectItem) { - if (string.IsNullOrEmpty(sourceFilePath)) + if (projectItem == null) { - throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpy, nameof(sourceFilePath)); + throw new ArgumentNullException(nameof(projectItem)); } var imports = new List(); AddDefaultDirectivesImport(imports); // We add hierarchical imports second so any default directive imports can be overridden. - AddHierarchicalImports(sourceFilePath, imports); + AddHierarchicalImports(projectItem, imports); return imports; } @@ -60,10 +60,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions } // Internal for testing - internal void AddHierarchicalImports(string sourceFilePath, List imports) + internal void AddHierarchicalImports(RazorProjectItem projectItem, List imports) { // We want items in descending order. FindHierarchicalItems returns items in ascending order. - var importProjectItems = ProjectEngine.FileSystem.FindHierarchicalItems(sourceFilePath, ImportsFileName).Reverse(); + var importProjectItems = ProjectEngine.FileSystem.FindHierarchicalItems(projectItem.FilePath, ImportsFileName).Reverse(); foreach (var importProjectItem in importProjectItems) { RazorSourceDocument importSourceDocument; diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorImportFeature.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorImportFeature.cs index 3d5c015a26..ea626e97e0 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorImportFeature.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorImportFeature.cs @@ -8,6 +8,6 @@ namespace Microsoft.AspNetCore.Razor.Language { internal class DefaultRazorImportFeature : RazorProjectEngineFeatureBase, IRazorImportFeature { - public IReadOnlyList GetImports(string sourceFilePath) => Array.Empty(); + public IReadOnlyList GetImports(RazorProjectItem projectItem) => Array.Empty(); } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs index 8f3017cea1..6cac02dc25 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs @@ -45,29 +45,16 @@ namespace Microsoft.AspNetCore.Razor.Language public override IReadOnlyList Features { get; } - public override RazorCodeDocument Process(string filePath) + public override RazorCodeDocument Process(RazorProjectItem projectItem) { - if (string.IsNullOrEmpty(filePath)) + if (projectItem == null) { - throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(filePath)); - } - - var projectItem = FileSystem.GetItem(filePath); - var sourceDocument = RazorSourceDocument.ReadFrom(projectItem); - var codeDocument = Process(sourceDocument); - - return codeDocument; - } - - public override RazorCodeDocument Process(RazorSourceDocument sourceDocument) - { - if (sourceDocument == null) - { - throw new ArgumentNullException(nameof(sourceDocument)); + throw new ArgumentNullException(nameof(projectItem)); } var importFeature = GetRequiredFeature(); - var imports = importFeature.GetImports(sourceDocument.FilePath); + var imports = importFeature.GetImports(projectItem); + var sourceDocument = RazorSourceDocument.ReadFrom(projectItem); var codeDocument = RazorCodeDocument.Create(sourceDocument, imports); diff --git a/src/Microsoft.AspNetCore.Razor.Language/IRazorImportFeature.cs b/src/Microsoft.AspNetCore.Razor.Language/IRazorImportFeature.cs index 76e50c31c7..f002cd20ce 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/IRazorImportFeature.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/IRazorImportFeature.cs @@ -7,6 +7,6 @@ namespace Microsoft.AspNetCore.Razor.Language { public interface IRazorImportFeature : IRazorProjectEngineFeature { - IReadOnlyList GetImports(string sourceFilePath); + IReadOnlyList GetImports(RazorProjectItem projectItem); } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs index 88522e9326..7f2c03e8e3 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs @@ -14,9 +14,7 @@ namespace Microsoft.AspNetCore.Razor.Language public abstract IReadOnlyList Features { get; } - public abstract RazorCodeDocument Process(string filePath); - - public abstract RazorCodeDocument Process(RazorSourceDocument sourceDocument); + public abstract RazorCodeDocument Process(RazorProjectItem projectItem); public static RazorProjectEngine Create(RazorProjectFileSystem fileSystem) => Create(fileSystem, configure: null); diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineFeatureBase.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineFeatureBase.cs index f5944a83ff..ec170659e4 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineFeatureBase.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineFeatureBase.cs @@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Razor.Language { private RazorProjectEngine _projectEngine; - public RazorProjectEngine ProjectEngine + public virtual RazorProjectEngine ProjectEngine { get => _projectEngine; set diff --git a/src/Microsoft.AspNetCore.Razor.Language/VirtualRazorProjectFileSystem.cs b/src/Microsoft.AspNetCore.Razor.Language/VirtualRazorProjectFileSystem.cs index bb9a75ee3a..6b3737fb73 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/VirtualRazorProjectFileSystem.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/VirtualRazorProjectFileSystem.cs @@ -10,20 +10,19 @@ namespace Microsoft.AspNetCore.Razor.Language { internal class VirtualRazorProjectFileSystem : RazorProjectFileSystem { - private readonly DirectoryNode Root = new DirectoryNode("/"); + private readonly DirectoryNode _root = new DirectoryNode("/"); public override IEnumerable EnumerateItems(string basePath) { - basePath = NormalizeAndEnsureValidPath(basePath); - var directory = Root.GetDirectory(basePath); + var directory = _root.GetDirectory(basePath); return directory?.EnumerateItems() ?? Enumerable.Empty(); } public override RazorProjectItem GetItem(string path) { path = NormalizeAndEnsureValidPath(path); - return Root.GetItem(path) ?? new NotFoundProjectItem(string.Empty, path); + return _root.GetItem(path) ?? new NotFoundProjectItem(string.Empty, path); } public void Add(RazorProjectItem projectItem) @@ -34,7 +33,7 @@ namespace Microsoft.AspNetCore.Razor.Language } var filePath = NormalizeAndEnsureValidPath(projectItem.FilePath); - Root.AddFile(new FileNode(filePath, projectItem)); + _root.AddFile(new FileNode(filePath, projectItem)); } // Internal for testing diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/DefaultMvcImportFeatureTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/DefaultMvcImportFeatureTest.cs index 32e254a45b..3ae6d8dd13 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/DefaultMvcImportFeatureTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/DefaultMvcImportFeatureTest.cs @@ -29,12 +29,13 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions { // Arrange var imports = new List(); + var projectItem = new TestRazorProjectItem("/Contact/Index.cshtml"); var testFileSystem = new TestRazorProjectFileSystem(new[] { new TestRazorProjectItem("/Index.cshtml"), new TestRazorProjectItem("/_ViewImports.cshtml"), new TestRazorProjectItem("/Contact/_ViewImports.cshtml"), - new TestRazorProjectItem("/Contact/Index.cshtml"), + projectItem, }); var mvcImportFeature = new DefaultMvcImportFeature() { @@ -42,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions }; // Act - mvcImportFeature.AddHierarchicalImports("/Contact/Index.cshtml", imports); + mvcImportFeature.AddHierarchicalImports(projectItem, imports); // Assert Assert.Collection(imports, @@ -55,17 +56,15 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions { // Arrange var imports = new List(); - var testFileSystem = new TestRazorProjectFileSystem(new[] - { - new TestRazorProjectItem("/Pages/Contact/Index.cshtml"), - }); + var projectItem = new TestRazorProjectItem("/Pages/Contact/Index.cshtml"); + var testFileSystem = new TestRazorProjectFileSystem(new[] { projectItem }); var mvcImportFeature = new DefaultMvcImportFeature() { ProjectEngine = Mock.Of(projectEngine => projectEngine.FileSystem == testFileSystem) }; // Act - mvcImportFeature.AddHierarchicalImports("/Pages/Contact/Index.cshtml", imports); + mvcImportFeature.AddHierarchicalImports(projectItem, imports); // Assert Assert.Collection(imports, diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/DefaultMvcImportFeatureTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/DefaultMvcImportFeatureTest.cs index 31d66517a1..3741760b4a 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/DefaultMvcImportFeatureTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/DefaultMvcImportFeatureTest.cs @@ -29,12 +29,13 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X { // Arrange var imports = new List(); + var projectItem = new TestRazorProjectItem("/Contact/Index.cshtml"); var testFileSystem = new TestRazorProjectFileSystem(new[] { new TestRazorProjectItem("/Index.cshtml"), new TestRazorProjectItem("/_ViewImports.cshtml"), new TestRazorProjectItem("/Contact/_ViewImports.cshtml"), - new TestRazorProjectItem("/Contact/Index.cshtml"), + projectItem, }); var mvcImportFeature = new DefaultMvcImportFeature() { @@ -42,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X }; // Act - mvcImportFeature.AddHierarchicalImports("/Contact/Index.cshtml", imports); + mvcImportFeature.AddHierarchicalImports(projectItem, imports); // Assert Assert.Collection(imports, @@ -55,17 +56,15 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X { // Arrange var imports = new List(); - var testFileSystem = new TestRazorProjectFileSystem(new[] - { - new TestRazorProjectItem("/Pages/Contact/Index.cshtml"), - }); + var projectItem = new TestRazorProjectItem("/Pages/Contact/Index.cshtml"); + var testFileSystem = new TestRazorProjectFileSystem(new[] { projectItem }); var mvcImportFeature = new DefaultMvcImportFeature() { ProjectEngine = Mock.Of(projectEngine => projectEngine.FileSystem == testFileSystem) }; // Act - mvcImportFeature.AddHierarchicalImports("/Pages/Contact/Index.cshtml", imports); + mvcImportFeature.AddHierarchicalImports(projectItem, imports); // Assert Assert.Collection(imports, diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs index ce95f80f6f..e767978411 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs @@ -12,10 +12,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void Process_GetsImportsFromFeature() { // Arrange - var sourceDocument = TestRazorSourceDocument.Create(); + var projectItem = new TestRazorProjectItem("Index.cshtml"); var testImport = TestRazorSourceDocument.Create(); var importFeature = new Mock(); - importFeature.Setup(feature => feature.GetImports(It.IsAny())) + importFeature.Setup(feature => feature.GetImports(It.IsAny())) .Returns(new[] { testImport }); var projectEngine = RazorProjectEngine.Create(TestRazorProjectFileSystem.Empty, builder => { @@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Razor.Language }); // Act - var codeDocument = projectEngine.Process(sourceDocument); + var codeDocument = projectEngine.Process(projectItem); // Assert var import = Assert.Single(codeDocument.Imports); @@ -34,11 +34,11 @@ namespace Microsoft.AspNetCore.Razor.Language public void Process_GeneratesCodeDocumentWithValidCSharpDocument() { // Arrange - var sourceDocument = TestRazorSourceDocument.Create(); + var projectItem = new TestRazorProjectItem("Index.cshtml"); var projectEngine = RazorProjectEngine.Create(TestRazorProjectFileSystem.Empty); // Act - var codeDocument = projectEngine.Process(sourceDocument); + var codeDocument = projectEngine.Process(projectItem); // Assert var csharpDocument = codeDocument.GetCSharpDocument(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs deleted file mode 100644 index 3224a5d9f0..0000000000 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs +++ /dev/null @@ -1,29 +0,0 @@ -// 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 Moq; -using Xunit; - -namespace Microsoft.AspNetCore.Razor.Language -{ - public class DefaultRazorProjectEngineTest - { - [Fact] - public void Process_AsksFileSystemForItems() - { - // Arrange - var razorProjectItem = new TestRazorProjectItem("/some/path.cshtml"); - var testFileSystem = new Mock(); - testFileSystem.Setup(fileSystem => fileSystem.GetItem("/some/path.cshtml")) - .Returns(razorProjectItem) - .Verifiable(); - var projectEngine = RazorProjectEngine.Create(testFileSystem.Object); - - // Act - projectEngine.Process("/some/path.cshtml"); - - // Assert - testFileSystem.Verify(); - } - } -} From 19ec12588031ed88957ad81ee1d426d3b9b869e4 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Sun, 11 Feb 2018 12:37:35 -0800 Subject: [PATCH 5/7] Update dependencies.props [auto-updated: dependencies] --- build/dependencies.props | 18 +++++++++--------- korebuild-lock.txt | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/build/dependencies.props b/build/dependencies.props index a9f53d7735..898bb3fff8 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -4,20 +4,20 @@ 0.10.11 - 2.1.0-preview2-15692 - 2.1.0-preview2-28215 - 2.1.0-preview2-28215 - 2.1.0-preview2-28215 + 2.1.0-preview2-15698 + 2.1.0-preview2-30077 + 2.1.0-preview2-30077 + 2.1.0-preview2-30077 15.3.409 15.3.409 15.3.409 2.6.1 2.6.1 - 2.1.0-preview2-28215 - 2.1.0-preview2-28215 + 2.1.0-preview2-30077 + 2.1.0-preview2-30077 2.1.0-preview2-25711-01 - 2.1.0-preview2-28215 - 2.1.0-preview2-28215 + 2.1.0-preview2-30077 + 2.1.0-preview2-30077 2.0.0 2.1.0-preview2-26130-04 15.3.0 @@ -56,7 +56,7 @@ 2.7.0-beta3-62512-06 0.8.0 2.3.1 - 2.3.1 + 2.4.0-beta.1.build3945 diff --git a/korebuild-lock.txt b/korebuild-lock.txt index 4d18d19325..c6125ba391 100644 --- a/korebuild-lock.txt +++ b/korebuild-lock.txt @@ -1,2 +1,2 @@ -version:2.1.0-preview2-15696 -commithash:85ae1301d1a2ff19aab6837cc657699ccca719b5 +version:2.1.0-preview2-15698 +commithash:7216e5068cb1957e09d45fcbe58a744dd5c2de73 From c7331565960d10d09e91150034c8e33c77572b41 Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Mon, 12 Feb 2018 14:02:56 -0800 Subject: [PATCH 6/7] SDK changes needed to decouple Razor from MVC --- .../Sdk.Razor.CurrentVersion.targets | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets b/src/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets index b3ce738715..2ea795e89b 100644 --- a/src/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets +++ b/src/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets @@ -30,6 +30,7 @@ Copyright (c) .NET Foundation. All rights reserved. --> + ResolveRazorConfiguration; ResolveRazorGenerateInputs; AssignRazorGenerateTargetPaths; ResolveAssemblyReferenceRazorGenerateInputs; @@ -181,6 +182,23 @@ Copyright (c) .NET Foundation. All rights reserved. + + + + + + + + + + + + - - - <_ResolvedRazorConfiguration Include="@(RazorConfiguration)" Condition="'%(RazorConfiguration.Identity)'=='$(RazorDefaultConfiguration)'" /> - <_ResolvedRazorExtensionName Include="%(_ResolvedRazorConfiguration.Extensions)"/> - - - - - - + Condition="'$(GenerateRazorAssemblyInfo)'=='true' and '$(RazorDefaultConfiguration)'!=''" + DependsOnTargets="ResolveRazorConfiguration"> <_Parameter1>$(RazorLangVersion) @@ -213,9 +222,9 @@ Copyright (c) .NET Foundation. All rights reserved. <_Parameter1>$(RazorDefaultConfiguration) - - <_Parameter1>%(_ResolvedRazorExtension.Identity) - <_Parameter2>%(_ResolvedRazorExtension.AssemblyName) + + <_Parameter1>%(ResolvedRazorExtension.Identity) + <_Parameter2>%(ResolvedRazorExtension.AssemblyName) From 6be6229d184e7918ff4b8b35a221f0fcfe18525d Mon Sep 17 00:00:00 2001 From: Pranav K Date: Mon, 12 Feb 2018 18:00:58 -0800 Subject: [PATCH 7/7] Include the buildMultiTargeting folder in the Sdk package --- src/Microsoft.NET.Sdk.Razor/Microsoft.NET.Sdk.Razor.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Microsoft.NET.Sdk.Razor/Microsoft.NET.Sdk.Razor.csproj b/src/Microsoft.NET.Sdk.Razor/Microsoft.NET.Sdk.Razor.csproj index c94af58ddf..95bb7fec04 100644 --- a/src/Microsoft.NET.Sdk.Razor/Microsoft.NET.Sdk.Razor.csproj +++ b/src/Microsoft.NET.Sdk.Razor/Microsoft.NET.Sdk.Razor.csproj @@ -13,6 +13,7 @@ +