Skip to content
This repository was archived by the owner on Nov 8, 2018. It is now read-only.

Commit 7f08040

Browse files
authored
Merge pull request #57 from sharwell/vs2017
Update the solution to Visual Studio 2017 and the new project system
2 parents 4eeaae7 + 59a9955 commit 7f08040

26 files changed

+295
-705
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@ bin/
33
obj/
44

55
# Artifacts of the IDE and build
6-
*.sln.ide/
76
.vs/
87
packages/
98
*.suo
109
*.user
1110
TestResults/
12-
.nuget/NuGet.exe
11+
.nuget/[Nn]u[Gg]et.exe
1312
build/nuget/
1413
*.log

.nuget/packages.config

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
33
<package id="Codecov" version="1.0.1" />
4-
<package id="NuGet.CommandLine" version="2.8.3" />
54
<package id="OpenCover" version="4.6.519" />
65
</packages>

AsyncUsageAnalyzers.sln

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 14
4-
VisualStudioVersion = 14.0.24720.0
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.26711.1
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AsyncUsageAnalyzers", "AsyncUsageAnalyzers\AsyncUsageAnalyzers\AsyncUsageAnalyzers.csproj", "{4E32037D-3EE0-419A-BC68-7D28FCD453A0}"
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsyncUsageAnalyzers", "AsyncUsageAnalyzers\AsyncUsageAnalyzers\AsyncUsageAnalyzers.csproj", "{4E32037D-3EE0-419A-BC68-7D28FCD453A0}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AsyncUsageAnalyzers.Test", "AsyncUsageAnalyzers\AsyncUsageAnalyzers.Test\AsyncUsageAnalyzers.Test.csproj", "{658C2A87-E2A9-494D-93D7-CB60EFE3D02B}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsyncUsageAnalyzers.Test", "AsyncUsageAnalyzers\AsyncUsageAnalyzers.Test\AsyncUsageAnalyzers.Test.csproj", "{658C2A87-E2A9-494D-93D7-CB60EFE3D02B}"
99
EndProject
10-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AsyncUsageAnalyzers.Vsix", "AsyncUsageAnalyzers\AsyncUsageAnalyzers.Vsix\AsyncUsageAnalyzers.Vsix.csproj", "{8ABF883C-450A-4D0E-8D50-BF8A07C82C1B}"
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsyncUsageAnalyzers.Vsix", "AsyncUsageAnalyzers\AsyncUsageAnalyzers.Vsix\AsyncUsageAnalyzers.Vsix.csproj", "{8ABF883C-450A-4D0E-8D50-BF8A07C82C1B}"
1111
EndProject
1212
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{84B978A9-3463-4915-B8D2-89AD4C919C68}"
1313
ProjectSection(SolutionItems) = preProject
@@ -26,7 +26,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{11D3EB88
2626
build\version.ps1 = build\version.ps1
2727
EndProjectSection
2828
EndProject
29-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AsyncUsageAnalyzers.CodeFixes", "AsyncUsageAnalyzers\AsyncUsageAnalyzers.CodeFixes\AsyncUsageAnalyzers.CodeFixes.csproj", "{BA0CD420-1E79-4FBC-B023-09C03BCDFFAC}"
29+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsyncUsageAnalyzers.CodeFixes", "AsyncUsageAnalyzers\AsyncUsageAnalyzers.CodeFixes\AsyncUsageAnalyzers.CodeFixes.csproj", "{BA0CD420-1E79-4FBC-B023-09C03BCDFFAC}"
3030
EndProject
3131
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "documentation", "documentation", "{9E388950-B857-4C92-9429-676FE26BF115}"
3232
ProjectSection(SolutionItems) = preProject
@@ -62,4 +62,7 @@ Global
6262
GlobalSection(SolutionProperties) = preSolution
6363
HideSolutionNode = FALSE
6464
EndGlobalSection
65+
GlobalSection(ExtensibilityGlobals) = postSolution
66+
SolutionGuid = {A8110A4D-9FB7-4C9B-9C89-78C536F8DB8D}
67+
EndGlobalSection
6568
EndGlobal
Lines changed: 33 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,158 +1,52 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="..\..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.props" Condition="Exists('..\..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.props')" />
4-
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
2+
<Project Sdk="Microsoft.NET.Sdk">
3+
54
<PropertyGroup>
6-
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
7-
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8-
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9-
<ProjectGuid>{BA0CD420-1E79-4FBC-B023-09C03BCDFFAC}</ProjectGuid>
10-
<OutputType>Library</OutputType>
11-
<AppDesignerFolder>Properties</AppDesignerFolder>
5+
<TargetFrameworks>netstandard1.1;net452</TargetFrameworks>
126
<RootNamespace>AsyncUsageAnalyzers</RootNamespace>
13-
<AssemblyName>AsyncUsageAnalyzers.CodeFixes</AssemblyName>
14-
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
15-
<TargetFrameworkProfile>Profile7</TargetFrameworkProfile>
16-
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
17-
</PropertyGroup>
18-
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
19-
<DebugSymbols>true</DebugSymbols>
20-
<DebugType>full</DebugType>
21-
<Optimize>false</Optimize>
22-
<OutputPath>bin\Debug\</OutputPath>
23-
<DefineConstants>DEBUG;TRACE</DefineConstants>
24-
<ErrorReport>prompt</ErrorReport>
25-
<WarningLevel>4</WarningLevel>
26-
</PropertyGroup>
27-
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
28-
<DebugType>pdbonly</DebugType>
29-
<Optimize>true</Optimize>
30-
<OutputPath>bin\Release\</OutputPath>
31-
<DefineConstants>TRACE</DefineConstants>
32-
<ErrorReport>prompt</ErrorReport>
33-
<WarningLevel>4</WarningLevel>
7+
<NeutralLanguage>en-US</NeutralLanguage>
8+
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
9+
<IncludeSymbols>true</IncludeSymbols>
10+
<NuspecFile>AsyncUsageAnalyzers.nuspec</NuspecFile>
11+
<NuspecProperties>configuration=$(Configuration);version=$(InformationalVersion)</NuspecProperties>
3412
</PropertyGroup>
13+
14+
<Choose>
15+
<When Condition="'$(TargetFramework)' == 'netstandard1.1'">
16+
<PropertyGroup>
17+
<PackageTargetFallback>portable-net45+win8</PackageTargetFallback>
18+
</PropertyGroup>
19+
</When>
20+
</Choose>
21+
3522
<PropertyGroup>
36-
<DocumentationFile>$(OutputPath)$(AssemblyName).xml</DocumentationFile>
3723
<CodeAnalysisRuleSet>..\AsyncUsageAnalyzers.ruleset</CodeAnalysisRuleSet>
3824
</PropertyGroup>
25+
3926
<PropertyGroup>
4027
<SignAssembly>true</SignAssembly>
41-
</PropertyGroup>
42-
<PropertyGroup>
4328
<AssemblyOriginatorKeyFile Condition="'$(KeyConfiguration)' == 'Final'">..\..\build\keys\AsyncUsageAnalyzers.snk</AssemblyOriginatorKeyFile>
4429
<AssemblyOriginatorKeyFile Condition="'$(KeyConfiguration)' != 'Final'">..\..\build\keys\AsyncUsageAnalyzers.dev.snk</AssemblyOriginatorKeyFile>
4530
</PropertyGroup>
31+
32+
<PropertyGroup Condition="'$(KeyConfiguration)' != 'Final'">
33+
<DefineConstants>$(DefineConstants);DEVELOPMENT_KEY</DefineConstants>
34+
</PropertyGroup>
35+
4636
<ItemGroup>
47-
<Compile Include="Helpers\CustomBatchFixAllProvider.cs" />
48-
<Compile Include="Helpers\CustomFixAllProviders.cs" />
49-
<Compile Include="Helpers\FixAllContextHelper.cs" />
50-
<Compile Include="Helpers\RenameHelper.cs" />
51-
<Compile Include="Naming\AvoidAsyncSuffixCodeFixProvider.cs" />
52-
<Compile Include="Naming\UseAsyncSuffixCodeFixProvider.cs" />
53-
<Compile Include="Properties\AssemblyInfo.cs" />
54-
<Compile Include="Usage\UseConfigureAwaitCodeFixProvider.cs" />
55-
</ItemGroup>
56-
<ItemGroup>
57-
<None Include="..\..\build\keys\AsyncUsageAnalyzers.dev.snk">
58-
<Link>AsyncUsageAnalyzers.dev.snk</Link>
59-
</None>
60-
<None Include="..\..\build\keys\AsyncUsageAnalyzers.snk">
61-
<Link>AsyncUsageAnalyzers.snk</Link>
62-
</None>
63-
<NuGetManifest Include="AsyncUsageAnalyzers.nuspec">
64-
<SubType>Designer</SubType>
65-
<Symbols>True</Symbols>
66-
<PackageAnalysis>False</PackageAnalysis>
67-
</NuGetManifest>
68-
<None Include="packages.config" />
69-
<None Include="tools\install.ps1">
70-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
71-
</None>
72-
<None Include="tools\uninstall.ps1">
73-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
74-
</None>
75-
<None Include="ReadMe.txt" />
76-
</ItemGroup>
77-
<ItemGroup>
78-
<AdditionalFiles Include="..\stylecop.json">
79-
<Link>stylecop.json</Link>
80-
</AdditionalFiles>
81-
</ItemGroup>
82-
<ItemGroup>
83-
<Reference Include="Microsoft.CodeAnalysis, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
84-
<HintPath>..\..\packages\Microsoft.CodeAnalysis.Common.1.0.0\lib\portable-net45+win8\Microsoft.CodeAnalysis.dll</HintPath>
85-
<Private>True</Private>
86-
</Reference>
87-
<Reference Include="Microsoft.CodeAnalysis.CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
88-
<HintPath>..\..\packages\Microsoft.CodeAnalysis.CSharp.1.0.0\lib\portable-net45+win8\Microsoft.CodeAnalysis.CSharp.dll</HintPath>
89-
<Private>True</Private>
90-
</Reference>
91-
<Reference Include="Microsoft.CodeAnalysis.CSharp.Workspaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
92-
<HintPath>..\..\packages\Microsoft.CodeAnalysis.CSharp.Workspaces.1.0.0\lib\portable-net45+win8\Microsoft.CodeAnalysis.CSharp.Workspaces.dll</HintPath>
93-
<Private>True</Private>
94-
</Reference>
95-
<Reference Include="Microsoft.CodeAnalysis.Workspaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
96-
<HintPath>..\..\packages\Microsoft.CodeAnalysis.Workspaces.Common.1.0.0\lib\portable-net45+win8\Microsoft.CodeAnalysis.Workspaces.dll</HintPath>
97-
<Private>True</Private>
98-
</Reference>
99-
<Reference Include="System.Collections.Immutable, Version=1.1.36.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
100-
<HintPath>..\..\packages\System.Collections.Immutable.1.1.36\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
101-
<Private>True</Private>
102-
</Reference>
103-
<Reference Include="System.Composition.AttributedModel, Version=1.0.27.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
104-
<HintPath>..\..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.AttributedModel.dll</HintPath>
105-
<Private>False</Private>
106-
</Reference>
107-
<Reference Include="System.Composition.Convention, Version=1.0.27.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
108-
<HintPath>..\..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.Convention.dll</HintPath>
109-
<Private>False</Private>
110-
</Reference>
111-
<Reference Include="System.Composition.Hosting, Version=1.0.27.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
112-
<HintPath>..\..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.Hosting.dll</HintPath>
113-
<Private>False</Private>
114-
</Reference>
115-
<Reference Include="System.Composition.Runtime, Version=1.0.27.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
116-
<HintPath>..\..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.Runtime.dll</HintPath>
117-
<Private>False</Private>
118-
</Reference>
119-
<Reference Include="System.Composition.TypedParts, Version=1.0.27.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
120-
<HintPath>..\..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.TypedParts.dll</HintPath>
121-
<Private>False</Private>
122-
</Reference>
123-
<Reference Include="System.Reflection.Metadata, Version=1.0.21.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
124-
<HintPath>..\..\packages\System.Reflection.Metadata.1.0.21\lib\portable-net45+win8\System.Reflection.Metadata.dll</HintPath>
125-
<Private>True</Private>
126-
</Reference>
37+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="1.0.0" />
38+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="1.0.0" />
12739
</ItemGroup>
40+
12841
<ItemGroup>
129-
<Analyzer Include="..\..\packages\AsyncUsageAnalyzers.1.0.0-alpha003\analyzers\dotnet\AsyncUsageAnalyzers.dll" />
130-
<Analyzer Include="..\..\packages\Microsoft.CodeAnalysis.Analyzers.1.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll" />
131-
<Analyzer Include="..\..\packages\Microsoft.CodeAnalysis.Analyzers.1.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.CSharp.Analyzers.dll" />
132-
<Analyzer Include="..\..\packages\StyleCop.Analyzers.1.0.0-rc3\analyzers\dotnet\cs\Newtonsoft.Json.dll" />
133-
<Analyzer Include="..\..\packages\StyleCop.Analyzers.1.0.0-rc3\analyzers\dotnet\cs\StyleCop.Analyzers.CodeFixes.dll" />
134-
<Analyzer Include="..\..\packages\StyleCop.Analyzers.1.0.0-rc3\analyzers\dotnet\cs\StyleCop.Analyzers.dll" />
42+
<ProjectReference Include="..\AsyncUsageAnalyzers\AsyncUsageAnalyzers.csproj" />
13543
</ItemGroup>
44+
13645
<ItemGroup>
137-
<ProjectReference Include="..\AsyncUsageAnalyzers\AsyncUsageAnalyzers.csproj">
138-
<Project>{4e32037d-3ee0-419a-bc68-7d28fcd453a0}</Project>
139-
<Name>AsyncUsageAnalyzers</Name>
140-
</ProjectReference>
46+
<None Include="AsyncUsageAnalyzers.nuspec" />
47+
<None Include="tools\install.ps1" />
48+
<None Include="tools\uninstall.ps1" />
49+
<None Include="ReadMe.txt" />
14150
</ItemGroup>
142-
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\v4.5\Microsoft.Portable.CSharp.targets" />
143-
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
144-
<PropertyGroup>
145-
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
146-
</PropertyGroup>
147-
<Error Condition="!Exists('..\..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.props'))" />
148-
<Error Condition="!Exists('..\..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.targets'))" />
149-
</Target>
150-
<Import Project="..\..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.targets" Condition="Exists('..\..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.targets')" />
151-
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
152-
Other similar extension points exist, see Microsoft.Common.targets.
153-
<Target Name="BeforeBuild">
154-
</Target>
155-
<Target Name="AfterBuild">
156-
</Target>
157-
-->
51+
15852
</Project>

AsyncUsageAnalyzers/AsyncUsageAnalyzers.CodeFixes/AsyncUsageAnalyzers.nuspec

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
<files>
1919

2020
<!-- Binaries and symbols -->
21-
<file src="bin\$Configuration$\AsyncUsageAnalyzers.dll" target="analyzers\dotnet\cs" />
22-
<file src="bin\$Configuration$\AsyncUsageAnalyzers.pdb" target="analyzers\dotnet\cs" />
23-
<file src="bin\$Configuration$\AsyncUsageAnalyzers.CodeFixes.dll" target="analyzers\dotnet\cs" />
24-
<file src="bin\$Configuration$\AsyncUsageAnalyzers.CodeFixes.pdb" target="analyzers\dotnet\cs" />
21+
<file src="bin\$Configuration$\netstandard1.1\AsyncUsageAnalyzers.dll" target="analyzers\dotnet\cs" />
22+
<file src="bin\$Configuration$\netstandard1.1\AsyncUsageAnalyzers.pdb" target="analyzers\dotnet\cs" />
23+
<file src="bin\$Configuration$\netstandard1.1\AsyncUsageAnalyzers.CodeFixes.dll" target="analyzers\dotnet\cs" />
24+
<file src="bin\$Configuration$\netstandard1.1\AsyncUsageAnalyzers.CodeFixes.pdb" target="analyzers\dotnet\cs" />
2525

2626
<!-- Scripts -->
2727
<file src="tools\install.ps1" target="tools\" />

AsyncUsageAnalyzers/AsyncUsageAnalyzers.CodeFixes/Helpers/CustomBatchFixAllProvider.cs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,20 @@ public virtual async Task<CodeAction> GetFixAsync(
5151

5252
var documents = documentsAndDiagnosticsToFixMap.Keys.ToImmutableArray();
5353
var fixesBag = new List<CodeAction>[documents.Length];
54-
var options = new ParallelOptions() { CancellationToken = fixAllContext.CancellationToken };
55-
Parallel.ForEach(documents, options, (document, state, index) =>
54+
var fixOperations = new List<Task>(documents.Length);
55+
for (int index = 0; index < documents.Length; index++)
5656
{
57-
fixAllContext.CancellationToken.ThrowIfCancellationRequested();
57+
if (fixAllContext.CancellationToken.IsCancellationRequested)
58+
{
59+
break;
60+
}
61+
62+
var document = documents[index];
5863
fixesBag[index] = new List<CodeAction>();
59-
this.AddDocumentFixesAsync(document, documentsAndDiagnosticsToFixMap[document], fixesBag[index].Add, fixAllContext).Wait(fixAllContext.CancellationToken);
60-
});
64+
fixOperations.Add(this.AddDocumentFixesAsync(document, documentsAndDiagnosticsToFixMap[document], fixesBag[index].Add, fixAllContext));
65+
}
66+
67+
await Task.WhenAll(fixOperations).ConfigureAwait(false);
6168

6269
if (fixesBag.Any(fixes => fixes.Count > 0))
6370
{
@@ -129,15 +136,23 @@ public virtual async Task<CodeAction> GetFixAsync(
129136
{
130137
if (projectsAndDiagnosticsToFixMap != null && projectsAndDiagnosticsToFixMap.Any())
131138
{
132-
var options = new ParallelOptions() { CancellationToken = fixAllContext.CancellationToken };
133139
var fixesBag = new List<CodeAction>[projectsAndDiagnosticsToFixMap.Count];
134-
Parallel.ForEach(projectsAndDiagnosticsToFixMap.Keys, options, (project, state, index) =>
140+
var fixOperations = new List<Task>(projectsAndDiagnosticsToFixMap.Count);
141+
int index = -1;
142+
foreach (var project in projectsAndDiagnosticsToFixMap.Keys)
135143
{
136-
fixAllContext.CancellationToken.ThrowIfCancellationRequested();
144+
if (fixAllContext.CancellationToken.IsCancellationRequested)
145+
{
146+
break;
147+
}
148+
149+
index++;
137150
var diagnostics = projectsAndDiagnosticsToFixMap[project];
138151
fixesBag[index] = new List<CodeAction>();
139-
this.AddProjectFixesAsync(project, diagnostics, fixesBag[index].Add, fixAllContext).Wait(fixAllContext.CancellationToken);
140-
});
152+
fixOperations.Add(this.AddProjectFixesAsync(project, diagnostics, fixesBag[index].Add, fixAllContext));
153+
}
154+
155+
await Task.WhenAll(fixOperations).ConfigureAwait(false);
141156

142157
if (fixesBag.Any(fixes => fixes.Count > 0))
143158
{

0 commit comments

Comments
 (0)