diff --git a/src/Razor/benchmarks/Microsoft.AspNetCore.Razor.Microbenchmarks/Resources/project.razor.bin b/src/Razor/benchmarks/Microsoft.AspNetCore.Razor.Microbenchmarks/Resources/project.razor.bin new file mode 100644 index 00000000000..f0b23a4522a Binary files /dev/null and b/src/Razor/benchmarks/Microsoft.AspNetCore.Razor.Microbenchmarks/Resources/project.razor.bin differ diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.ProjectEngineHost.Test/Serialization/SerializerValidationTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.ProjectEngineHost.Test/Serialization/SerializerValidationTest.cs index 0f1a4f21f81..7f20693762d 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.ProjectEngineHost.Test/Serialization/SerializerValidationTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.ProjectEngineHost.Test/Serialization/SerializerValidationTest.cs @@ -128,6 +128,35 @@ public void VerifyJson_TagHelpers(string resourceName, string? folderName = null Assert.Equal(originalTagHelpers, actualTagHelpers); } + + /// + /// Verifies that a previous generated file is able to be serialized. If this + /// fails make sure to do ONE of the following: + /// + /// 1. Update the deserializer to be lenient on the previous version + /// 2. Bump the Microsoft.AspNetCore.Razor.Serialization.MessagePack.SerializationFormat.Version + /// a. Generate a new file to replace project.razor.bin with the new format. As of writing this was made from the base blazorserver template + /// b. This will require a dual insertion with Roslyn do use the correct version number + /// + [Theory] + [InlineData("project.razor.bin")] + public void VerifyMessagePack_DeserializeMessagepack(string resourceName) + { + // Arrange + var resourceBytes = RazorTestResources.GetResourceBytes(resourceName, "Benchmarking"); + var options = MessagePackSerializerOptions.Standard + .WithResolver(CompositeResolver.Create( + RazorProjectInfoResolver.Instance, + StandardResolver.Instance)); + + // Act + var actualProjectInfo = MessagePackConvert.Deserialize(resourceBytes, options); + + // Assert + Assert.NotNull(actualProjectInfo); + Assert.NotNull(actualProjectInfo.DisplayName); + } + private static RazorProjectInfo DeserializeProjectInfoFromJsonBytes(byte[] resourceBytes) { using var stream = new MemoryStream(resourceBytes); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Microsoft.AspNetCore.Razor.Test.Common.Tooling.csproj b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Microsoft.AspNetCore.Razor.Test.Common.Tooling.csproj index 689f2ca524c..6794aba3522 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Microsoft.AspNetCore.Razor.Test.Common.Tooling.csproj +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Microsoft.AspNetCore.Razor.Test.Common.Tooling.csproj @@ -21,6 +21,7 @@ +