diff --git a/src/Microsoft.AspNet.Razor/RazorTemplateEngine.cs b/src/Microsoft.AspNet.Razor/RazorTemplateEngine.cs index c3d741c045..2b684f7ef6 100644 --- a/src/Microsoft.AspNet.Razor/RazorTemplateEngine.cs +++ b/src/Microsoft.AspNet.Razor/RazorTemplateEngine.cs @@ -176,21 +176,27 @@ namespace Microsoft.AspNet.Razor string sourceFileName) { MemoryStream memoryStream = null; + string checksum = null; try { - if (!inputStream.CanSeek) + if (!Host.DesignTimeMode) { - memoryStream = new MemoryStream(); - inputStream.CopyTo(memoryStream); + // We don't need to calculate the checksum in design time. - // We don't have to dispose the input stream since it is owned externally. - inputStream = memoryStream; + if (!inputStream.CanSeek) + { + memoryStream = new MemoryStream(); + inputStream.CopyTo(memoryStream); + + // We don't have to dispose the input stream since it is owned externally. + inputStream = memoryStream; + } + + inputStream.Position = 0; + checksum = ComputeChecksum(inputStream); + inputStream.Position = 0; } - inputStream.Position = 0; - var checksum = ComputeChecksum(inputStream); - inputStream.Position = 0; - using (var reader = new StreamReader(inputStream, Encoding.UTF8, detectEncodingFromByteOrderMarks: true, diff --git a/test/Microsoft.AspNet.Razor.Test/RazorTemplateEngineTest.cs b/test/Microsoft.AspNet.Razor.Test/RazorTemplateEngineTest.cs index 09e934c585..da7ae56d11 100644 --- a/test/Microsoft.AspNet.Razor.Test/RazorTemplateEngineTest.cs +++ b/test/Microsoft.AspNet.Razor.Test/RazorTemplateEngineTest.cs @@ -239,7 +239,7 @@ namespace Microsoft.AspNet.Razor.Test [Theory] [MemberData(nameof(GenerateCodeCalculatesLinePragma_IfStreamInputIsUsedData))] - public void GenerateCodeCalculatesLinePragma_IfStreamInputIsUsed(Stream stream) + public void GenerateCodeCalculatesChecksum_IfStreamInputIsUsed(Stream stream) { // Arrange var engine = new TestableRazorTemplateEngine(); @@ -251,6 +251,20 @@ namespace Microsoft.AspNet.Razor.Test Assert.Equal("7b502c3a1f48c8609ae212cdfb639dee39673f5e", engine.Checksum); } + [Fact] + public void GenerateCode_DoesNotCalculateChecksum_InDesignTimeMode() + { + // Arrange + var engine = new TestableRazorTemplateEngine(); + engine.Host.DesignTimeMode = true; + + // Act + var results = engine.GenerateCode(Stream.Null, "some-class", "some-ns", "foo.cshtml"); + + // Assert + Assert.Null(engine.Checksum); + } + private static RazorEngineHost CreateHost(bool designTime = false) { return new RazorEngineHost(new CSharpRazorCodeLanguage()) @@ -264,7 +278,6 @@ namespace Microsoft.AspNet.Razor.Test public TestableRazorTemplateEngine() : base(CreateHost()) { - } public string Checksum { get; set; }