dotnet / format

Home for the dotnet-format command
MIT License
1.92k stars 174 forks source link

Include external access layer for Razor #1989

Closed sharwell closed 10 months ago

sharwell commented 10 months ago

This assembly must be provided by the host (alongside Microsoft.CodeAnalysis.dll) for Razor to be supported.

@JoeRobich @jjonescz this fixes tests failing with the following message:

  Failed Microsoft.CodeAnalysis.Tools.Tests.MSBuild.MSBuildWorkspaceLoaderTests.CSharpTemplateProject_LoadWithNoDiagnostics(templateName: "web") [4 s]
  Error Message:
   System.MissingMethodException : Method not found: 'System.Collections.Generic.IEnumerator`1<Microsoft.CodeAnalysis.NodeStateEntry`1<System.ValueTuple`2<System.__Canon,System.__Canon>>> Microsoft.CodeAnalysis.NodeStateTable`1.GetEnumerator()'.
  Stack Trace:
     at Microsoft.CodeAnalysis.ExternalAccess.RazorCompiler.HostOutputNode`1.AppendOutputs(IncrementalExecutionContext context, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.GeneratorDriver.UpdateOutputs(ImmutableArray`1 outputNodes, IncrementalGeneratorOutputKind outputKind, Builder generatorRunStateBuilder, CancellationToken cancellationToken, Builder driverStateBuilder)
   at Microsoft.CodeAnalysis.GeneratorDriver.RunGeneratorsCore(Compilation compilation, DiagnosticBag diagnosticsBag, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.GeneratorDriver.RunGenerators(Compilation compilation, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.SolutionState.CompilationTracker.ComputeNewGeneratorInfoInCurrentProcessAsync(SolutionState solution, Compilation compilationWithoutGeneratedFiles, CompilationTrackerGeneratorInfo generatorInfo, Compilation compilationWithStaleGeneratedTrees, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.SolutionState.CompilationTracker.ComputeNewGeneratorInfoAsync(SolutionState solution, Compilation compilationWithoutGeneratedFiles, CompilationTrackerGeneratorInfo generatorInfo, Compilation compilationWithStaleGeneratedTrees, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.SolutionState.CompilationTracker.AddExistingOrComputeNewGeneratorInfoAsync(SolutionState solution, Compilation compilationWithoutGeneratedFiles, CompilationTrackerGeneratorInfo generatorInfo, Compilation compilationWithStaleGeneratedTrees, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.SolutionState.CompilationTracker.FinalizeCompilationAsync(SolutionState solution, Compilation compilationWithoutGeneratedFiles, CompilationTrackerGeneratorInfo generatorInfo, Compilation compilationWithStaleGeneratedTrees, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.SolutionState.CompilationTracker.BuildCompilationInfoFromScratchAsync(SolutionState solution, CompilationTrackerGeneratorInfo generatorInfo, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.SolutionState.CompilationTracker.BuildCompilationInfoAsync(SolutionState solution, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetOrBuildCompilationInfoAsync(SolutionState solution, Boolean lockGate, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.SolutionState.CompilationTracker.GetCompilationSlowAsync(SolutionState solution, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.Tools.Tests.MSBuild.MSBuildWorkspaceLoaderTests.AssertProjectLoadsCleanlyAsync(String projectFilePath, ILogger logger, String[] ignoredDiagnostics) in /_/tests/MSBuild/MSBuildWorkspaceLoaderTests.cs:line 147
   at Microsoft.CodeAnalysis.Tools.Tests.MSBuild.MSBuildWorkspaceLoaderTests.AssertTemplateProjectLoadsCleanlyAsync(String templateName, String languageName, String[] ignoredDiagnostics) in /_/tests/MSBuild/MSBuildWorkspaceLoaderTests.cs:line 114
   at Microsoft.CodeAnalysis.Tools.Tests.MSBuild.MSBuildWorkspaceLoaderTests.CSharpTemplateProject_LoadWithNoDiagnostics(String templateName) in /_/tests/MSBuild/MSBuildWorkspaceLoaderTests.cs:line 78

/cc @jaredpar