diff --git a/scripts/MergeAnalyzerMetadata.ps1 b/scripts/MergeAnalyzerMetadata.ps1
index 34b9f66d9fb..91316d012c8 100644
--- a/scripts/MergeAnalyzerMetadata.ps1
+++ b/scripts/MergeAnalyzerMetadata.ps1
@@ -19,42 +19,15 @@ Write-Output "Restoring packages"
$Artifacts = Join-Path -Path $PSScriptRoot -ChildPath "\..\artifacts" -Resolve
$DiagToolPath = "$Artifacts\bin\DiagConfig\Debug\net8.0\*"
$Diags = (Resolve-Path $PSScriptRoot).Path + "\..\eng\Diags"
+# Project which will be used to fetch the analyzer list.
+$AsyncStateProjectPath = (Resolve-Path $PSScriptRoot).Path + "\..\test\Libraries\Microsoft.AspNetCore.AsyncState.Tests\Microsoft.AspNetCore.AsyncState.Tests.csproj"
-# TODO: needs to be auto-generated. This is a dump of the Analyzers items when compiling test/libraries/microsoft.aspnetcore.asyncstate
-$analyzers = @(
- 'C:\src\dotnet\extensions\.dotnet\sdk\8.0.100-preview.7.23360.1\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll'
- 'C:\src\dotnet\extensions\.dotnet\sdk\8.0.100-preview.7.23360.1\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll'
- 'C:\src\dotnet\extensions\.dotnet\sdk\8.0.100-preview.7.23360.1\Sdks\Microsoft.NET.Sdk\targets\..\codestyle\cs\Microsoft.CodeAnalysis.CodeStyle.dll'
- 'C:\src\dotnet\extensions\.dotnet\sdk\8.0.100-preview.7.23360.1\Sdks\Microsoft.NET.Sdk\targets\..\codestyle\cs\Microsoft.CodeAnalysis.CodeStyle.Fixes.dll'
- 'C:\src\dotnet\extensions\.dotnet\sdk\8.0.100-preview.7.23360.1\Sdks\Microsoft.NET.Sdk\targets\..\codestyle\cs\Microsoft.CodeAnalysis.CSharp.CodeStyle.dll'
- 'C:\src\dotnet\extensions\.dotnet\sdk\8.0.100-preview.7.23360.1\Sdks\Microsoft.NET.Sdk\targets\..\codestyle\cs\Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes.dll'
- 'C:\Users\mataille\.nuget\packages\microsoft.extensions.logging.abstractions\8.0.0-rc.1.23402.13\analyzers\dotnet\roslyn4.4\cs\Microsoft.Extensions.Logging.Generators.dll'
- 'C:\Users\mataille\.nuget\packages\microsoft.extensions.options\8.0.0-rc.1.23402.13\analyzers\dotnet\roslyn4.4\cs\Microsoft.Extensions.Options.SourceGeneration.dll'
- 'C:\Users\mataille\.nuget\packages\microsoft.net.illink.tasks\8.0.0-preview.7.23359.1\analyzers\dotnet\cs\ILLink.CodeFixProvider.dll'
- 'C:\Users\mataille\.nuget\packages\microsoft.net.illink.tasks\8.0.0-preview.7.23359.1\analyzers\dotnet\cs\ILLink.RoslynAnalyzer.dll'
- 'C:\Users\mataille\.nuget\packages\microsoft.visualstudio.threading.analyzers\17.5.22\analyzers\cs\Microsoft.VisualStudio.Threading.Analyzers.CSharp.dll'
- 'C:\Users\mataille\.nuget\packages\microsoft.visualstudio.threading.analyzers\17.5.22\analyzers\cs\Microsoft.VisualStudio.Threading.Analyzers.CodeFixes.dll'
- 'C:\Users\mataille\.nuget\packages\microsoft.visualstudio.threading.analyzers\17.5.22\analyzers\cs\Microsoft.VisualStudio.Threading.Analyzers.dll'
- 'C:\Users\mataille\.nuget\packages\sonaranalyzer.csharp\8.52.0.60960\analyzers\Google.Protobuf.dll'
- 'C:\Users\mataille\.nuget\packages\sonaranalyzer.csharp\8.52.0.60960\analyzers\SonarAnalyzer.CFG.dll'
- 'C:\Users\mataille\.nuget\packages\sonaranalyzer.csharp\8.52.0.60960\analyzers\SonarAnalyzer.CSharp.dll'
- 'C:\Users\mataille\.nuget\packages\sonaranalyzer.csharp\8.52.0.60960\analyzers\SonarAnalyzer.dll'
- 'C:\Users\mataille\.nuget\packages\stylecop.analyzers.unstable\1.2.0.507\analyzers\dotnet\cs\StyleCop.Analyzers.CodeFixes.dll'
- 'C:\Users\mataille\.nuget\packages\stylecop.analyzers.unstable\1.2.0.507\analyzers\dotnet\cs\StyleCop.Analyzers.dll'
- 'C:\src\dotnet\extensions\artifacts\bin\Microsoft.Analyzers.Extra\Debug\netstandard2.0\Microsoft.Analyzers.Extra.dll'
- 'C:\src\dotnet\extensions\artifacts\bin\Microsoft.Analyzers.Local\Debug\netstandard2.0\Microsoft.Analyzers.Local.dll'
- 'C:\src\dotnet\extensions\.dotnet\packs\Microsoft.NETCore.App.Ref\8.0.0-preview.7.23359.1\analyzers/dotnet/cs/Microsoft.Interop.ComInterfaceGenerator.dll'
- 'C:\src\dotnet\extensions\.dotnet\packs\Microsoft.NETCore.App.Ref\8.0.0-preview.7.23359.1\analyzers/dotnet/cs/Microsoft.Interop.JavaScript.JSImportGenerator.dll'
- 'C:\src\dotnet\extensions\.dotnet\packs\Microsoft.NETCore.App.Ref\8.0.0-preview.7.23359.1\analyzers/dotnet/cs/Microsoft.Interop.LibraryImportGenerator.dll'
- 'C:\src\dotnet\extensions\.dotnet\packs\Microsoft.NETCore.App.Ref\8.0.0-preview.7.23359.1\analyzers/dotnet/cs/Microsoft.Interop.SourceGeneration.dll'
- 'C:\src\dotnet\extensions\.dotnet\packs\Microsoft.NETCore.App.Ref\8.0.0-preview.7.23359.1\analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll'
- 'C:\src\dotnet\extensions\.dotnet\packs\Microsoft.NETCore.App.Ref\8.0.0-preview.7.23359.1\analyzers/dotnet/cs/System.Text.RegularExpressions.Generator.dll'
- 'C:\src\dotnet\extensions\.dotnet\packs\Microsoft.AspNetCore.App.Ref\8.0.0-preview.7.23359.2\analyzers/dotnet/cs/Microsoft.AspNetCore.App.Analyzers.dll'
- 'C:\src\dotnet\extensions\.dotnet\packs\Microsoft.AspNetCore.App.Ref\8.0.0-preview.7.23359.2\analyzers/dotnet/cs/Microsoft.AspNetCore.App.CodeFixes.dll'
- 'C:\src\dotnet\extensions\.dotnet\packs\Microsoft.AspNetCore.App.Ref\8.0.0-preview.7.23359.2\analyzers/dotnet/cs/Microsoft.AspNetCore.Components.Analyzers.dll'
- 'C:\Users\mataille\.nuget\packages\xunit.analyzers\1.1.0\analyzers\dotnet\cs\xunit.analyzers.dll'
- 'C:\Users\mataille\.nuget\packages\xunit.analyzers\1.1.0\analyzers\dotnet\cs\xunit.analyzers.fixes.dll'
-)
+# In this section, we dynamically fetch the list of analyzers we should use by calling a target from one project which will return us the full list. To do so,
+# we must capture the msbuild output of the invocation of that target which returns a list of strings (one string for each line of output). Then we join all of these
+# lines into a single one, and we use a simple Regex to get the full list of analyzers.
+$_outputArray = & dotnet msbuild $AsyncStateProjectPath /t:GetAnalyzersPassedToCompiler /p:TargetFramework=net8.0
+$_output = $_outputArray -join "`n"
+$analyzers = $_output -match "Analyzers: (.+)$" | ForEach-Object { $matches[1] -split ',' }
Write-Output "Processing analyzer assemblies"
@@ -75,20 +48,20 @@ try {
Copy-Item -Path $DiagToolPath -Destination $tempDir
- & .\DiagConfig.exe $Diags analyzer merge Microsoft.Analyzers.Extra.dll
- & .\DiagConfig.exe $Diags analyzer merge Microsoft.Analyzers.Local.dll
- & .\DiagConfig.exe $Diags analyzer merge StyleCop.Analyzers.dll
- & .\DiagConfig.exe $Diags analyzer merge SonarAnalyzer.CSharp.dll
- & .\DiagConfig.exe $Diags analyzer merge Microsoft.VisualStudio.Threading.Analyzers.dll
- & .\DiagConfig.exe $Diags analyzer merge Microsoft.VisualStudio.Threading.Analyzers.CSharp.dll
- & .\DiagConfig.exe $Diags analyzer merge xunit.analyzers.dll
- & .\DiagConfig.exe $Diags analyzer merge Microsoft.CodeAnalysis.CodeStyle.dll
- & .\DiagConfig.exe $Diags analyzer merge Microsoft.CodeAnalysis.CSharp.CodeStyle.dll
- & .\DiagConfig.exe $Diags analyzer merge Microsoft.CodeAnalysis.NetAnalyzers.dll
- & .\DiagConfig.exe $Diags analyzer merge Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll
- & .\DiagConfig.exe $Diags analyzer merge ILlink.RoslynAnalyzer.dll
-# & .\DiagConfig.exe $Diags analyzer merge Microsoft.AspNetCore.App.Analyzers.dll
- & .\DiagConfig.exe $Diags analyzer merge Microsoft.AspNetCore.Components.Analyzers.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.Analyzers.Extra.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.Analyzers.Local.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge StyleCop.Analyzers.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge SonarAnalyzer.CSharp.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.VisualStudio.Threading.Analyzers.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.VisualStudio.Threading.Analyzers.CSharp.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge xunit.analyzers.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.CodeAnalysis.CodeStyle.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.CodeAnalysis.CSharp.CodeStyle.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.CodeAnalysis.NetAnalyzers.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge ILlink.RoslynAnalyzer.dll
+# & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.AspNetCore.App.Analyzers.dll
+ & dotnet exec .\DiagConfig.dll $Diags analyzer merge Microsoft.AspNetCore.Components.Analyzers.dll
} finally {
Pop-Location
Remove-Item -Path $tempDir -Recurse
diff --git a/test/Libraries/Microsoft.AspNetCore.AsyncState.Tests/Microsoft.AspNetCore.AsyncState.Tests.csproj b/test/Libraries/Microsoft.AspNetCore.AsyncState.Tests/Microsoft.AspNetCore.AsyncState.Tests.csproj
index 9495fec22fb..0463641cd51 100644
--- a/test/Libraries/Microsoft.AspNetCore.AsyncState.Tests/Microsoft.AspNetCore.AsyncState.Tests.csproj
+++ b/test/Libraries/Microsoft.AspNetCore.AsyncState.Tests/Microsoft.AspNetCore.AsyncState.Tests.csproj
@@ -2,6 +2,8 @@
Microsoft.AspNetCore.AsyncState.Test
Unit tests for Microsoft.AspNetCore.AsyncState.
+
+ true
@@ -11,4 +13,13 @@
+
+
+
+
+