Add a top-level node for analyzers (#9906)

This is the first step, and just estabilishes a skeleton. The end goal
is organize our analyzers under this node because:
1. We're writing some 'top level' analyzers that depend on everything
else
2. We want to be able to service analyzers on the SDK schedule
(independent of runtime).

Next, we'll merge the MVC analyzers into this assembly since there's no
reason for them to be separate. The MVC API analyzers will remain a
separate package, but under this node. The component analyzers will
remain separate as they need to ship as a package, but will move under
this node as well.
This commit is contained in:
Ryan Nowak 2019-05-07 15:01:08 -07:00 committed by GitHub
parent 04600e83fc
commit 1b47f44876
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 1452 additions and 7 deletions

View File

@ -166,6 +166,7 @@
$(RepositoryRoot)src\MusicStore\**\*.*proj;
$(RepositoryRoot)src\SignalR\**\*.csproj;
$(RepositoryRoot)src\Components\**\*.csproj;
$(RepositoryRoot)src\Analyzers\**\*.csproj;
$(RepositoryRoot)src\ProjectTemplates\*\*.csproj;
$(RepositoryRoot)src\ProjectTemplates\testassets\*\*.csproj;
"

View File

@ -150,9 +150,9 @@
<MicrosoftAzureStorageBlobPackageVersion>10.0.1</MicrosoftAzureStorageBlobPackageVersion>
<MicrosoftBuildFrameworkPackageVersion>15.8.166</MicrosoftBuildFrameworkPackageVersion>
<MicrosoftBuildUtilitiesCorePackageVersion>15.8.166</MicrosoftBuildUtilitiesCorePackageVersion>
<MicrosoftCodeAnalysisCommonPackageVersion>2.8.0</MicrosoftCodeAnalysisCommonPackageVersion>
<MicrosoftCodeAnalysisCSharpPackageVersion>2.8.0</MicrosoftCodeAnalysisCSharpPackageVersion>
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>2.8.0</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
<MicrosoftCodeAnalysisCommonPackageVersion>3.0.0</MicrosoftCodeAnalysisCommonPackageVersion>
<MicrosoftCodeAnalysisCSharpPackageVersion>3.0.0</MicrosoftCodeAnalysisCSharpPackageVersion>
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>3.0.0</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
<MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>3.19.8</MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>
<MicrosoftIdentityModelLoggingPackageVersion>5.3.0</MicrosoftIdentityModelLoggingPackageVersion>
<MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>5.3.0</MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>

794
src/Analyzers/Analyzers.sln Normal file
View File

@ -0,0 +1,794 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28903.44
MinimumVisualStudioVersion = 15.0.26124.0
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analyzers", "Analyzers", "{E20BC57F-1881-40B0-BEAF-338BBDA87956}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc", "..\Mvc\Mvc\src\Microsoft.AspNetCore.Mvc.csproj", "{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR", "..\SignalR\server\SignalR\src\Microsoft.AspNetCore.SignalR.csproj", "{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.Server", "..\Components\Server\src\Microsoft.AspNetCore.Components.Server.csproj", "{476B2742-74FD-4009-92DE-7B1214EAF244}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Antiforgery", "..\Antiforgery\src\Microsoft.AspNetCore.Antiforgery.csproj", "{E38BD375-143D-4928-8814-924597931A07}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Authentication.Abstractions", "..\Http\Authentication.Abstractions\src\Microsoft.AspNetCore.Authentication.Abstractions.csproj", "{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Authentication.Core", "..\Http\Authentication.Core\src\Microsoft.AspNetCore.Authentication.Core.csproj", "{31B70151-7A3F-47F9-87DE-B279E93B3915}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Authorization", "..\Security\Authorization\Core\src\Microsoft.AspNetCore.Authorization.csproj", "{D345FDA8-05A0-4141-BCEF-1A11AF01480A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Authorization.Policy", "..\Security\Authorization\Policy\src\Microsoft.AspNetCore.Authorization.Policy.csproj", "{34CCB39F-37E7-46E7-AC58-E9197F4A5380}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components", "..\Components\Components\src\Microsoft.AspNetCore.Components.csproj", "{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Components.Browser", "..\Components\Browser\src\Microsoft.AspNetCore.Components.Browser.csproj", "{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Connections.Abstractions", "..\Servers\Connections.Abstractions\src\Microsoft.AspNetCore.Connections.Abstractions.csproj", "{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Cors", "..\Middleware\CORS\src\Microsoft.AspNetCore.Cors.csproj", "{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Cryptography.Internal", "..\DataProtection\Cryptography.Internal\src\Microsoft.AspNetCore.Cryptography.Internal.csproj", "{D8F56A11-8961-4BD4-8846-C5483BA500F8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.DataProtection", "..\DataProtection\DataProtection\src\Microsoft.AspNetCore.DataProtection.csproj", "{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.DataProtection.Abstractions", "..\DataProtection\Abstractions\src\Microsoft.AspNetCore.DataProtection.Abstractions.csproj", "{52055C8F-9A92-48D4-B4F7-33F287173456}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Diagnostics.Abstractions", "..\Middleware\Diagnostics.Abstractions\src\Microsoft.AspNetCore.Diagnostics.Abstractions.csproj", "{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Hosting.Abstractions", "..\Hosting\Abstractions\src\Microsoft.AspNetCore.Hosting.Abstractions.csproj", "{DF11316F-4166-415D-B610-01603DADFED1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Hosting.Server.Abstractions", "..\Hosting\Server.Abstractions\src\Microsoft.AspNetCore.Hosting.Server.Abstractions.csproj", "{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Html.Abstractions", "..\Html\Abstractions\src\Microsoft.AspNetCore.Html.Abstractions.csproj", "{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http", "..\Http\Http\src\Microsoft.AspNetCore.Http.csproj", "{3090F751-B421-4853-829C-C0CC5ADE3D83}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Abstractions", "..\Http\Http.Abstractions\src\Microsoft.AspNetCore.Http.Abstractions.csproj", "{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections", "..\SignalR\common\Http.Connections\src\Microsoft.AspNetCore.Http.Connections.csproj", "{4B501200-A3FD-4F3B-B8AC-582108B13A05}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections.Common", "..\SignalR\common\Http.Connections.Common\src\Microsoft.AspNetCore.Http.Connections.Common.csproj", "{99F7E758-9327-4A16-8AB7-72B35B1D2C92}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Extensions", "..\Http\Http.Extensions\src\Microsoft.AspNetCore.Http.Extensions.csproj", "{04C932ED-58DA-4EB9-90CD-2835C67B9952}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Features", "..\Http\Http.Features\src\Microsoft.AspNetCore.Http.Features.csproj", "{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Localization", "..\Middleware\Localization\src\Microsoft.AspNetCore.Localization.csproj", "{9D5B4D52-7E1B-4981-8994-5288262577B2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Abstractions", "..\Mvc\Mvc.Abstractions\src\Microsoft.AspNetCore.Mvc.Abstractions.csproj", "{06091041-72DA-4C68-8FC1-AD65E495993D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.ApiExplorer", "..\Mvc\Mvc.ApiExplorer\src\Microsoft.AspNetCore.Mvc.ApiExplorer.csproj", "{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Core", "..\Mvc\Mvc.Core\src\Microsoft.AspNetCore.Mvc.Core.csproj", "{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Cors", "..\Mvc\Mvc.Cors\src\Microsoft.AspNetCore.Mvc.Cors.csproj", "{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.DataAnnotations", "..\Mvc\Mvc.DataAnnotations\src\Microsoft.AspNetCore.Mvc.DataAnnotations.csproj", "{2E4394A2-9863-4B60-B9EA-906FA6C46854}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Formatters.Json", "..\Mvc\Mvc.Formatters.Json\src\Microsoft.AspNetCore.Mvc.Formatters.Json.csproj", "{470CD0EE-3C90-462A-B003-3403AB4558A5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Localization", "..\Mvc\Mvc.Localization\src\Microsoft.AspNetCore.Mvc.Localization.csproj", "{0192C192-BE48-4BC4-8308-9497407FA054}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Razor", "..\Mvc\Mvc.Razor\src\Microsoft.AspNetCore.Mvc.Razor.csproj", "{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.RazorPages", "..\Mvc\Mvc.RazorPages\src\Microsoft.AspNetCore.Mvc.RazorPages.csproj", "{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.TagHelpers", "..\Mvc\Mvc.TagHelpers\src\Microsoft.AspNetCore.Mvc.TagHelpers.csproj", "{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.ViewFeatures", "..\Mvc\Mvc.ViewFeatures\src\Microsoft.AspNetCore.Mvc.ViewFeatures.csproj", "{47E04D89-C2F0-4339-B439-E097AD1ABC09}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Razor", "..\Razor\Razor\src\Microsoft.AspNetCore.Razor.csproj", "{10588AC3-7F69-47F3-B58D-387ED27C9A50}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Razor.Runtime", "..\Razor\Razor.Runtime\src\Microsoft.AspNetCore.Razor.Runtime.csproj", "{3EEBE055-DD80-4256-B71F-48C9489E2FC2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.ResponseCaching.Abstractions", "..\Middleware\ResponseCaching.Abstractions\src\Microsoft.AspNetCore.ResponseCaching.Abstractions.csproj", "{F871786B-8DF5-4BA7-A5CA-D128651F69AA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Routing", "..\Http\Routing\src\Microsoft.AspNetCore.Routing.csproj", "{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Routing.Abstractions", "..\Http\Routing.Abstractions\src\Microsoft.AspNetCore.Routing.Abstractions.csproj", "{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Common", "..\SignalR\common\SignalR.Common\src\Microsoft.AspNetCore.SignalR.Common.csproj", "{D3A17614-4C31-455F-ADA4-0FD746C569BE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Core", "..\SignalR\server\Core\src\Microsoft.AspNetCore.SignalR.Core.csproj", "{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Protocols.Json", "..\SignalR\common\Protocols.Json\src\Microsoft.AspNetCore.SignalR.Protocols.Json.csproj", "{01E8A2FA-4591-4D85-81BE-341CA3C61A90}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.StaticFiles", "..\Middleware\StaticFiles\src\Microsoft.AspNetCore.StaticFiles.csproj", "{894DE066-00B0-44E6-88B9-46F91A17EE26}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.WebSockets", "..\Middleware\WebSockets\src\Microsoft.AspNetCore.WebSockets.csproj", "{0684DA04-DFBA-499D-8D07-2649C3C1068D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.WebUtilities", "..\Http\WebUtilities\src\Microsoft.AspNetCore.WebUtilities.csproj", "{66456C7C-8CE9-4E01-95A3-399B59CA3438}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Net.Http.Headers", "..\Http\Headers\src\Microsoft.Net.Http.Headers.csproj", "{BDF0389F-B502-4D71-8ADF-206A59F9D32A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Analyzers", "Analyzers\src\Microsoft.AspNetCore.Analyzers.csproj", "{95534D16-E720-4435-9867-5D3E2B288406}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Analyzers.Test", "Analyzers\test\Microsoft.AspNetCore.Analyzers.Test.csproj", "{63A928CC-792F-400A-97D3-F455C0A78B8F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_dependencies", "_dependencies", "{15FC976B-4FFC-47E1-A047-194F21C3CA9F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Debug|x64.ActiveCfg = Debug|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Debug|x64.Build.0 = Debug|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Debug|x86.ActiveCfg = Debug|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Debug|x86.Build.0 = Debug|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Release|Any CPU.Build.0 = Release|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Release|x64.ActiveCfg = Release|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Release|x64.Build.0 = Release|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Release|x86.ActiveCfg = Release|Any CPU
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A}.Release|x86.Build.0 = Release|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Debug|x64.ActiveCfg = Debug|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Debug|x64.Build.0 = Debug|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Debug|x86.ActiveCfg = Debug|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Debug|x86.Build.0 = Debug|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Release|Any CPU.Build.0 = Release|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Release|x64.ActiveCfg = Release|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Release|x64.Build.0 = Release|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Release|x86.ActiveCfg = Release|Any CPU
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6}.Release|x86.Build.0 = Release|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Debug|Any CPU.Build.0 = Debug|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Debug|x64.ActiveCfg = Debug|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Debug|x64.Build.0 = Debug|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Debug|x86.ActiveCfg = Debug|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Debug|x86.Build.0 = Debug|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Release|Any CPU.ActiveCfg = Release|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Release|Any CPU.Build.0 = Release|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Release|x64.ActiveCfg = Release|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Release|x64.Build.0 = Release|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Release|x86.ActiveCfg = Release|Any CPU
{476B2742-74FD-4009-92DE-7B1214EAF244}.Release|x86.Build.0 = Release|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Debug|x64.ActiveCfg = Debug|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Debug|x64.Build.0 = Debug|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Debug|x86.ActiveCfg = Debug|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Debug|x86.Build.0 = Debug|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Release|Any CPU.Build.0 = Release|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Release|x64.ActiveCfg = Release|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Release|x64.Build.0 = Release|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Release|x86.ActiveCfg = Release|Any CPU
{E38BD375-143D-4928-8814-924597931A07}.Release|x86.Build.0 = Release|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Debug|x64.ActiveCfg = Debug|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Debug|x64.Build.0 = Debug|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Debug|x86.ActiveCfg = Debug|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Debug|x86.Build.0 = Debug|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Release|Any CPU.Build.0 = Release|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Release|x64.ActiveCfg = Release|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Release|x64.Build.0 = Release|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Release|x86.ActiveCfg = Release|Any CPU
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D}.Release|x86.Build.0 = Release|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Debug|Any CPU.Build.0 = Debug|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Debug|x64.ActiveCfg = Debug|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Debug|x64.Build.0 = Debug|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Debug|x86.ActiveCfg = Debug|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Debug|x86.Build.0 = Debug|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Release|Any CPU.ActiveCfg = Release|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Release|Any CPU.Build.0 = Release|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Release|x64.ActiveCfg = Release|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Release|x64.Build.0 = Release|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Release|x86.ActiveCfg = Release|Any CPU
{31B70151-7A3F-47F9-87DE-B279E93B3915}.Release|x86.Build.0 = Release|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Debug|x64.ActiveCfg = Debug|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Debug|x64.Build.0 = Debug|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Debug|x86.ActiveCfg = Debug|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Debug|x86.Build.0 = Debug|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Release|Any CPU.Build.0 = Release|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Release|x64.ActiveCfg = Release|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Release|x64.Build.0 = Release|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Release|x86.ActiveCfg = Release|Any CPU
{D345FDA8-05A0-4141-BCEF-1A11AF01480A}.Release|x86.Build.0 = Release|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Debug|x64.ActiveCfg = Debug|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Debug|x64.Build.0 = Debug|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Debug|x86.ActiveCfg = Debug|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Debug|x86.Build.0 = Debug|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Release|Any CPU.Build.0 = Release|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Release|x64.ActiveCfg = Release|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Release|x64.Build.0 = Release|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Release|x86.ActiveCfg = Release|Any CPU
{34CCB39F-37E7-46E7-AC58-E9197F4A5380}.Release|x86.Build.0 = Release|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Debug|x64.ActiveCfg = Debug|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Debug|x64.Build.0 = Debug|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Debug|x86.ActiveCfg = Debug|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Debug|x86.Build.0 = Debug|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Release|Any CPU.Build.0 = Release|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Release|x64.ActiveCfg = Release|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Release|x64.Build.0 = Release|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Release|x86.ActiveCfg = Release|Any CPU
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1}.Release|x86.Build.0 = Release|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Debug|x64.ActiveCfg = Debug|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Debug|x64.Build.0 = Debug|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Debug|x86.ActiveCfg = Debug|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Debug|x86.Build.0 = Debug|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Release|Any CPU.Build.0 = Release|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Release|x64.ActiveCfg = Release|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Release|x64.Build.0 = Release|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Release|x86.ActiveCfg = Release|Any CPU
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC}.Release|x86.Build.0 = Release|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Debug|x64.ActiveCfg = Debug|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Debug|x64.Build.0 = Debug|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Debug|x86.ActiveCfg = Debug|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Debug|x86.Build.0 = Debug|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Release|Any CPU.Build.0 = Release|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Release|x64.ActiveCfg = Release|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Release|x64.Build.0 = Release|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Release|x86.ActiveCfg = Release|Any CPU
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E}.Release|x86.Build.0 = Release|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Debug|x64.ActiveCfg = Debug|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Debug|x64.Build.0 = Debug|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Debug|x86.ActiveCfg = Debug|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Debug|x86.Build.0 = Debug|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Release|Any CPU.Build.0 = Release|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Release|x64.ActiveCfg = Release|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Release|x64.Build.0 = Release|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Release|x86.ActiveCfg = Release|Any CPU
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22}.Release|x86.Build.0 = Release|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Debug|x64.ActiveCfg = Debug|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Debug|x64.Build.0 = Debug|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Debug|x86.ActiveCfg = Debug|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Debug|x86.Build.0 = Debug|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Release|Any CPU.Build.0 = Release|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Release|x64.ActiveCfg = Release|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Release|x64.Build.0 = Release|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Release|x86.ActiveCfg = Release|Any CPU
{D8F56A11-8961-4BD4-8846-C5483BA500F8}.Release|x86.Build.0 = Release|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Debug|x64.ActiveCfg = Debug|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Debug|x64.Build.0 = Debug|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Debug|x86.ActiveCfg = Debug|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Debug|x86.Build.0 = Debug|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Release|Any CPU.Build.0 = Release|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Release|x64.ActiveCfg = Release|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Release|x64.Build.0 = Release|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Release|x86.ActiveCfg = Release|Any CPU
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F}.Release|x86.Build.0 = Release|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Debug|x64.ActiveCfg = Debug|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Debug|x64.Build.0 = Debug|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Debug|x86.ActiveCfg = Debug|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Debug|x86.Build.0 = Debug|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Release|Any CPU.Build.0 = Release|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Release|x64.ActiveCfg = Release|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Release|x64.Build.0 = Release|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Release|x86.ActiveCfg = Release|Any CPU
{52055C8F-9A92-48D4-B4F7-33F287173456}.Release|x86.Build.0 = Release|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Debug|x64.ActiveCfg = Debug|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Debug|x64.Build.0 = Debug|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Debug|x86.ActiveCfg = Debug|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Debug|x86.Build.0 = Debug|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Release|Any CPU.Build.0 = Release|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Release|x64.ActiveCfg = Release|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Release|x64.Build.0 = Release|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Release|x86.ActiveCfg = Release|Any CPU
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F}.Release|x86.Build.0 = Release|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Debug|x64.ActiveCfg = Debug|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Debug|x64.Build.0 = Debug|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Debug|x86.ActiveCfg = Debug|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Debug|x86.Build.0 = Debug|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Release|Any CPU.Build.0 = Release|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Release|x64.ActiveCfg = Release|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Release|x64.Build.0 = Release|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Release|x86.ActiveCfg = Release|Any CPU
{DF11316F-4166-415D-B610-01603DADFED1}.Release|x86.Build.0 = Release|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Debug|x64.ActiveCfg = Debug|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Debug|x64.Build.0 = Debug|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Debug|x86.ActiveCfg = Debug|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Debug|x86.Build.0 = Debug|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Release|Any CPU.Build.0 = Release|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Release|x64.ActiveCfg = Release|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Release|x64.Build.0 = Release|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Release|x86.ActiveCfg = Release|Any CPU
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC}.Release|x86.Build.0 = Release|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Debug|x64.ActiveCfg = Debug|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Debug|x64.Build.0 = Debug|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Debug|x86.ActiveCfg = Debug|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Debug|x86.Build.0 = Debug|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Release|Any CPU.Build.0 = Release|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Release|x64.ActiveCfg = Release|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Release|x64.Build.0 = Release|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Release|x86.ActiveCfg = Release|Any CPU
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6}.Release|x86.Build.0 = Release|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Debug|x64.ActiveCfg = Debug|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Debug|x64.Build.0 = Debug|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Debug|x86.ActiveCfg = Debug|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Debug|x86.Build.0 = Debug|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Release|Any CPU.Build.0 = Release|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Release|x64.ActiveCfg = Release|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Release|x64.Build.0 = Release|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Release|x86.ActiveCfg = Release|Any CPU
{3090F751-B421-4853-829C-C0CC5ADE3D83}.Release|x86.Build.0 = Release|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Debug|x64.ActiveCfg = Debug|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Debug|x64.Build.0 = Debug|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Debug|x86.ActiveCfg = Debug|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Debug|x86.Build.0 = Debug|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Release|Any CPU.Build.0 = Release|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Release|x64.ActiveCfg = Release|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Release|x64.Build.0 = Release|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Release|x86.ActiveCfg = Release|Any CPU
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33}.Release|x86.Build.0 = Release|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Debug|x64.ActiveCfg = Debug|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Debug|x64.Build.0 = Debug|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Debug|x86.ActiveCfg = Debug|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Debug|x86.Build.0 = Debug|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Release|Any CPU.Build.0 = Release|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Release|x64.ActiveCfg = Release|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Release|x64.Build.0 = Release|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Release|x86.ActiveCfg = Release|Any CPU
{4B501200-A3FD-4F3B-B8AC-582108B13A05}.Release|x86.Build.0 = Release|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Debug|x64.ActiveCfg = Debug|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Debug|x64.Build.0 = Debug|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Debug|x86.ActiveCfg = Debug|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Debug|x86.Build.0 = Debug|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Release|Any CPU.Build.0 = Release|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Release|x64.ActiveCfg = Release|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Release|x64.Build.0 = Release|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Release|x86.ActiveCfg = Release|Any CPU
{99F7E758-9327-4A16-8AB7-72B35B1D2C92}.Release|x86.Build.0 = Release|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Debug|x64.ActiveCfg = Debug|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Debug|x64.Build.0 = Debug|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Debug|x86.ActiveCfg = Debug|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Debug|x86.Build.0 = Debug|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Release|Any CPU.Build.0 = Release|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Release|x64.ActiveCfg = Release|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Release|x64.Build.0 = Release|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Release|x86.ActiveCfg = Release|Any CPU
{04C932ED-58DA-4EB9-90CD-2835C67B9952}.Release|x86.Build.0 = Release|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Debug|x64.ActiveCfg = Debug|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Debug|x64.Build.0 = Debug|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Debug|x86.ActiveCfg = Debug|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Debug|x86.Build.0 = Debug|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Release|Any CPU.Build.0 = Release|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Release|x64.ActiveCfg = Release|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Release|x64.Build.0 = Release|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Release|x86.ActiveCfg = Release|Any CPU
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803}.Release|x86.Build.0 = Release|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Debug|x64.ActiveCfg = Debug|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Debug|x64.Build.0 = Debug|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Debug|x86.ActiveCfg = Debug|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Debug|x86.Build.0 = Debug|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Release|Any CPU.Build.0 = Release|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Release|x64.ActiveCfg = Release|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Release|x64.Build.0 = Release|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Release|x86.ActiveCfg = Release|Any CPU
{9D5B4D52-7E1B-4981-8994-5288262577B2}.Release|x86.Build.0 = Release|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Debug|x64.ActiveCfg = Debug|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Debug|x64.Build.0 = Debug|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Debug|x86.ActiveCfg = Debug|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Debug|x86.Build.0 = Debug|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Release|Any CPU.Build.0 = Release|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Release|x64.ActiveCfg = Release|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Release|x64.Build.0 = Release|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Release|x86.ActiveCfg = Release|Any CPU
{06091041-72DA-4C68-8FC1-AD65E495993D}.Release|x86.Build.0 = Release|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Debug|x64.ActiveCfg = Debug|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Debug|x64.Build.0 = Debug|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Debug|x86.ActiveCfg = Debug|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Debug|x86.Build.0 = Debug|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Release|Any CPU.Build.0 = Release|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Release|x64.ActiveCfg = Release|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Release|x64.Build.0 = Release|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Release|x86.ActiveCfg = Release|Any CPU
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB}.Release|x86.Build.0 = Release|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Debug|x64.ActiveCfg = Debug|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Debug|x64.Build.0 = Debug|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Debug|x86.ActiveCfg = Debug|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Debug|x86.Build.0 = Debug|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Release|Any CPU.Build.0 = Release|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Release|x64.ActiveCfg = Release|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Release|x64.Build.0 = Release|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Release|x86.ActiveCfg = Release|Any CPU
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E}.Release|x86.Build.0 = Release|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Debug|x64.ActiveCfg = Debug|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Debug|x64.Build.0 = Debug|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Debug|x86.ActiveCfg = Debug|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Debug|x86.Build.0 = Debug|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Release|Any CPU.Build.0 = Release|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Release|x64.ActiveCfg = Release|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Release|x64.Build.0 = Release|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Release|x86.ActiveCfg = Release|Any CPU
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7}.Release|x86.Build.0 = Release|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Debug|x64.ActiveCfg = Debug|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Debug|x64.Build.0 = Debug|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Debug|x86.ActiveCfg = Debug|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Debug|x86.Build.0 = Debug|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Release|Any CPU.Build.0 = Release|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Release|x64.ActiveCfg = Release|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Release|x64.Build.0 = Release|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Release|x86.ActiveCfg = Release|Any CPU
{2E4394A2-9863-4B60-B9EA-906FA6C46854}.Release|x86.Build.0 = Release|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Debug|x64.ActiveCfg = Debug|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Debug|x64.Build.0 = Debug|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Debug|x86.ActiveCfg = Debug|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Debug|x86.Build.0 = Debug|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Release|Any CPU.Build.0 = Release|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Release|x64.ActiveCfg = Release|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Release|x64.Build.0 = Release|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Release|x86.ActiveCfg = Release|Any CPU
{470CD0EE-3C90-462A-B003-3403AB4558A5}.Release|x86.Build.0 = Release|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Debug|x64.ActiveCfg = Debug|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Debug|x64.Build.0 = Debug|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Debug|x86.ActiveCfg = Debug|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Debug|x86.Build.0 = Debug|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Release|Any CPU.Build.0 = Release|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Release|x64.ActiveCfg = Release|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Release|x64.Build.0 = Release|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Release|x86.ActiveCfg = Release|Any CPU
{0192C192-BE48-4BC4-8308-9497407FA054}.Release|x86.Build.0 = Release|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Debug|x64.ActiveCfg = Debug|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Debug|x64.Build.0 = Debug|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Debug|x86.ActiveCfg = Debug|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Debug|x86.Build.0 = Debug|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Release|Any CPU.Build.0 = Release|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Release|x64.ActiveCfg = Release|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Release|x64.Build.0 = Release|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Release|x86.ActiveCfg = Release|Any CPU
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30}.Release|x86.Build.0 = Release|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Debug|x64.ActiveCfg = Debug|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Debug|x64.Build.0 = Debug|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Debug|x86.ActiveCfg = Debug|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Debug|x86.Build.0 = Debug|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Release|Any CPU.Build.0 = Release|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Release|x64.ActiveCfg = Release|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Release|x64.Build.0 = Release|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Release|x86.ActiveCfg = Release|Any CPU
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3}.Release|x86.Build.0 = Release|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Debug|x64.ActiveCfg = Debug|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Debug|x64.Build.0 = Debug|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Debug|x86.ActiveCfg = Debug|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Debug|x86.Build.0 = Debug|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Release|Any CPU.Build.0 = Release|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Release|x64.ActiveCfg = Release|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Release|x64.Build.0 = Release|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Release|x86.ActiveCfg = Release|Any CPU
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C}.Release|x86.Build.0 = Release|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Debug|Any CPU.Build.0 = Debug|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Debug|x64.ActiveCfg = Debug|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Debug|x64.Build.0 = Debug|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Debug|x86.ActiveCfg = Debug|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Debug|x86.Build.0 = Debug|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Release|Any CPU.Build.0 = Release|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Release|x64.ActiveCfg = Release|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Release|x64.Build.0 = Release|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Release|x86.ActiveCfg = Release|Any CPU
{47E04D89-C2F0-4339-B439-E097AD1ABC09}.Release|x86.Build.0 = Release|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Debug|x64.ActiveCfg = Debug|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Debug|x64.Build.0 = Debug|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Debug|x86.ActiveCfg = Debug|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Debug|x86.Build.0 = Debug|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Release|Any CPU.Build.0 = Release|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Release|x64.ActiveCfg = Release|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Release|x64.Build.0 = Release|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Release|x86.ActiveCfg = Release|Any CPU
{10588AC3-7F69-47F3-B58D-387ED27C9A50}.Release|x86.Build.0 = Release|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Debug|x64.ActiveCfg = Debug|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Debug|x64.Build.0 = Debug|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Debug|x86.ActiveCfg = Debug|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Debug|x86.Build.0 = Debug|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Release|Any CPU.Build.0 = Release|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Release|x64.ActiveCfg = Release|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Release|x64.Build.0 = Release|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Release|x86.ActiveCfg = Release|Any CPU
{3EEBE055-DD80-4256-B71F-48C9489E2FC2}.Release|x86.Build.0 = Release|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Debug|x64.ActiveCfg = Debug|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Debug|x64.Build.0 = Debug|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Debug|x86.ActiveCfg = Debug|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Debug|x86.Build.0 = Debug|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Release|Any CPU.Build.0 = Release|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Release|x64.ActiveCfg = Release|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Release|x64.Build.0 = Release|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Release|x86.ActiveCfg = Release|Any CPU
{F871786B-8DF5-4BA7-A5CA-D128651F69AA}.Release|x86.Build.0 = Release|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Debug|x64.ActiveCfg = Debug|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Debug|x64.Build.0 = Debug|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Debug|x86.ActiveCfg = Debug|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Debug|x86.Build.0 = Debug|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Release|Any CPU.Build.0 = Release|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Release|x64.ActiveCfg = Release|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Release|x64.Build.0 = Release|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Release|x86.ActiveCfg = Release|Any CPU
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05}.Release|x86.Build.0 = Release|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Debug|x64.ActiveCfg = Debug|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Debug|x64.Build.0 = Debug|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Debug|x86.ActiveCfg = Debug|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Debug|x86.Build.0 = Debug|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Release|Any CPU.Build.0 = Release|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Release|x64.ActiveCfg = Release|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Release|x64.Build.0 = Release|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Release|x86.ActiveCfg = Release|Any CPU
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1}.Release|x86.Build.0 = Release|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Debug|x64.ActiveCfg = Debug|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Debug|x64.Build.0 = Debug|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Debug|x86.ActiveCfg = Debug|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Debug|x86.Build.0 = Debug|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Release|Any CPU.Build.0 = Release|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Release|x64.ActiveCfg = Release|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Release|x64.Build.0 = Release|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Release|x86.ActiveCfg = Release|Any CPU
{D3A17614-4C31-455F-ADA4-0FD746C569BE}.Release|x86.Build.0 = Release|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Debug|x64.ActiveCfg = Debug|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Debug|x64.Build.0 = Debug|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Debug|x86.ActiveCfg = Debug|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Debug|x86.Build.0 = Debug|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Release|Any CPU.Build.0 = Release|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Release|x64.ActiveCfg = Release|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Release|x64.Build.0 = Release|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Release|x86.ActiveCfg = Release|Any CPU
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E}.Release|x86.Build.0 = Release|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Debug|Any CPU.Build.0 = Debug|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Debug|x64.ActiveCfg = Debug|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Debug|x64.Build.0 = Debug|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Debug|x86.ActiveCfg = Debug|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Debug|x86.Build.0 = Debug|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Release|Any CPU.ActiveCfg = Release|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Release|Any CPU.Build.0 = Release|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Release|x64.ActiveCfg = Release|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Release|x64.Build.0 = Release|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Release|x86.ActiveCfg = Release|Any CPU
{01E8A2FA-4591-4D85-81BE-341CA3C61A90}.Release|x86.Build.0 = Release|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Debug|Any CPU.Build.0 = Debug|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Debug|x64.ActiveCfg = Debug|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Debug|x64.Build.0 = Debug|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Debug|x86.ActiveCfg = Debug|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Debug|x86.Build.0 = Debug|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Release|Any CPU.ActiveCfg = Release|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Release|Any CPU.Build.0 = Release|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Release|x64.ActiveCfg = Release|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Release|x64.Build.0 = Release|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Release|x86.ActiveCfg = Release|Any CPU
{894DE066-00B0-44E6-88B9-46F91A17EE26}.Release|x86.Build.0 = Release|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Debug|x64.ActiveCfg = Debug|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Debug|x64.Build.0 = Debug|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Debug|x86.ActiveCfg = Debug|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Debug|x86.Build.0 = Debug|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Release|Any CPU.Build.0 = Release|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Release|x64.ActiveCfg = Release|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Release|x64.Build.0 = Release|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Release|x86.ActiveCfg = Release|Any CPU
{0684DA04-DFBA-499D-8D07-2649C3C1068D}.Release|x86.Build.0 = Release|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Debug|Any CPU.Build.0 = Debug|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Debug|x64.ActiveCfg = Debug|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Debug|x64.Build.0 = Debug|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Debug|x86.ActiveCfg = Debug|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Debug|x86.Build.0 = Debug|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Release|Any CPU.ActiveCfg = Release|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Release|Any CPU.Build.0 = Release|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Release|x64.ActiveCfg = Release|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Release|x64.Build.0 = Release|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Release|x86.ActiveCfg = Release|Any CPU
{66456C7C-8CE9-4E01-95A3-399B59CA3438}.Release|x86.Build.0 = Release|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Debug|x64.ActiveCfg = Debug|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Debug|x64.Build.0 = Debug|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Debug|x86.ActiveCfg = Debug|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Debug|x86.Build.0 = Debug|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Release|Any CPU.Build.0 = Release|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Release|x64.ActiveCfg = Release|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Release|x64.Build.0 = Release|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Release|x86.ActiveCfg = Release|Any CPU
{BDF0389F-B502-4D71-8ADF-206A59F9D32A}.Release|x86.Build.0 = Release|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Debug|x64.ActiveCfg = Debug|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Debug|x64.Build.0 = Debug|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Debug|x86.ActiveCfg = Debug|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Debug|x86.Build.0 = Debug|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Release|Any CPU.Build.0 = Release|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Release|x64.ActiveCfg = Release|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Release|x64.Build.0 = Release|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Release|x86.ActiveCfg = Release|Any CPU
{95534D16-E720-4435-9867-5D3E2B288406}.Release|x86.Build.0 = Release|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Debug|x64.ActiveCfg = Debug|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Debug|x64.Build.0 = Debug|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Debug|x86.ActiveCfg = Debug|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Debug|x86.Build.0 = Debug|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Release|Any CPU.Build.0 = Release|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Release|x64.ActiveCfg = Release|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Release|x64.Build.0 = Release|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Release|x86.ActiveCfg = Release|Any CPU
{63A928CC-792F-400A-97D3-F455C0A78B8F}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{C13EDBA9-14CB-46FE-8F9F-3ABCC1A5CD3A} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{E60ADC05-55CE-46FD-9CBF-31E31FEF79D6} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{476B2742-74FD-4009-92DE-7B1214EAF244} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{E38BD375-143D-4928-8814-924597931A07} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{B0E13EEA-7E85-4265-BC1C-AFA1526FB36D} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{31B70151-7A3F-47F9-87DE-B279E93B3915} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{D345FDA8-05A0-4141-BCEF-1A11AF01480A} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{34CCB39F-37E7-46E7-AC58-E9197F4A5380} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{34522BFF-D1D8-44A3-891E-77C6BE7C81F1} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{9C20C5AB-E609-4167-922D-0E7C7C6ED1EC} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{A21D03D7-5D69-47E7-B32C-4D7067D71B0E} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{48A3DFDD-C975-42CA-87BA-3B8BAF549E22} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{D8F56A11-8961-4BD4-8846-C5483BA500F8} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{7E619CBF-B8B4-4FF6-8A73-C259FD4B0A0F} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{52055C8F-9A92-48D4-B4F7-33F287173456} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{AACC0D65-5B5D-4D38-BC24-1FADDC1A5F0F} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{DF11316F-4166-415D-B610-01603DADFED1} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{AEC73094-8FE0-419C-A7E4-4BCC7CEF2BBC} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{A42AAAA1-C8D9-4EA9-935F-A155F8B4BEE6} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{3090F751-B421-4853-829C-C0CC5ADE3D83} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{E10A7203-BCC8-4F81-A9FB-56C241BC4B33} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{4B501200-A3FD-4F3B-B8AC-582108B13A05} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{99F7E758-9327-4A16-8AB7-72B35B1D2C92} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{04C932ED-58DA-4EB9-90CD-2835C67B9952} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{7B7FBB84-21AE-4720-90BE-F9FD22AEE803} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{9D5B4D52-7E1B-4981-8994-5288262577B2} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{06091041-72DA-4C68-8FC1-AD65E495993D} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{535E8748-EC5E-41CB-94ED-ACB8A75E46AB} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{9B71BB93-4E03-4F4A-A52C-6490E9CFD99E} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{11FB37B1-F4C9-4C4F-867E-4FD9050282C7} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{2E4394A2-9863-4B60-B9EA-906FA6C46854} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{470CD0EE-3C90-462A-B003-3403AB4558A5} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{0192C192-BE48-4BC4-8308-9497407FA054} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{DB90A8A7-6E65-4388-AA9A-4FCFFF39AF30} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{823DD383-E8EB-4CF8-84BB-0EA3D6E024C3} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{BD6F4453-AE41-4578-B3FB-9F7C4617D96C} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{47E04D89-C2F0-4339-B439-E097AD1ABC09} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{10588AC3-7F69-47F3-B58D-387ED27C9A50} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{3EEBE055-DD80-4256-B71F-48C9489E2FC2} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{F871786B-8DF5-4BA7-A5CA-D128651F69AA} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{AFBA7019-7A48-42AB-9C0B-B10D8CDC8A05} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{B634CC5E-8AC9-49EF-801F-C04AA322EEC1} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{D3A17614-4C31-455F-ADA4-0FD746C569BE} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{8AFB0927-456A-4EC9-A07F-65C15A03AA9E} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{01E8A2FA-4591-4D85-81BE-341CA3C61A90} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{894DE066-00B0-44E6-88B9-46F91A17EE26} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{0684DA04-DFBA-499D-8D07-2649C3C1068D} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{66456C7C-8CE9-4E01-95A3-399B59CA3438} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{BDF0389F-B502-4D71-8ADF-206A59F9D32A} = {15FC976B-4FFC-47E1-A047-194F21C3CA9F}
{95534D16-E720-4435-9867-5D3E2B288406} = {E20BC57F-1881-40B0-BEAF-338BBDA87956}
{63A928CC-792F-400A-97D3-F455C0A78B8F} = {E20BC57F-1881-40B0-BEAF-338BBDA87956}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C44A91F6-58D3-4900-8D5C-60E9690D5D3B}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,46 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>CSharp Analyzers for ASP.NET Core.</Description>
<PackageTags>aspnetcore</PackageTags>
<!--
This package is for internal use only. It contains analyzers that are bundled in the .NET Core Web SDK.
We do need to pack it so it can be picked up by the Web SDK.
-->
<IsShippingPackage>false</IsShippingPackage>
<IsPackable>true</IsPackable>
<TargetFramework>netstandard2.0</TargetFramework>
<IncludeBuildOutput>false</IncludeBuildOutput>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" PrivateAssets="All" />
</ItemGroup>
<Target Name="PopulateNuspec" BeforeTargets="GenerateNuspec">
<PropertyGroup>
<NuspecProperties>
id=$(PackageId);
version=$(PackageVersion);
authors=$(Authors);
description=$(Description);
tags=$(PackageTags.Replace(';', ' '));
licenseUrl=$(PackageLicenseUrl);
projectUrl=$(PackageProjectUrl);
iconUrl=$(PackageIconUrl);
repositoryUrl=$(RepositoryUrl);
repositoryCommit=$(SourceRevisionId);
copyright=$(Copyright);
OutputBinary=$(OutputPath)$(AssemblyName).dll;
OutputSymbol=$(OutputPath)$(AssemblyName).pdb;
</NuspecProperties>
</PropertyGroup>
</Target>
</Project>

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>$id$</id>
<version>$version$</version>
<authors>$authors$</authors>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<licenseUrl>$licenseUrl$</licenseUrl>
<projectUrl>$projectUrl$</projectUrl>
<iconUrl>$iconUrl$</iconUrl>
<description>$description$</description>
<copyright>$copyright$</copyright>
<tags>$tags$</tags>
<repository type="git" url="$repositoryUrl$" commit="$repositoryCommit$" />
<dependencies>
<group targetFramework=".NETStandard1.3" />
</dependencies>
</metadata>
<files>
<file src="$OutputBinary$" target="analyzers\dotnet\cs\" />
<file src="$OutputSymbol$" target="analyzers\dotnet\cs\" />
</files>
</package>

View File

@ -0,0 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Microsoft.AspNetCore.Analyzers.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")]

View File

@ -0,0 +1,126 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.CodeAnalysis;
namespace Microsoft.AspNetCore.Analyzers
{
internal static class StartupFacts
{
public static bool IsStartupClass(StartupSymbols symbols, INamedTypeSymbol type)
{
if (symbols == null)
{
throw new ArgumentNullException(nameof(symbols));
}
if (type == null)
{
throw new ArgumentNullException(nameof(type));
}
// It's not good enough to just look for a method called ConfigureServices or Configure as a hueristic.
// ConfigureServices might not appear in trivial cases, and Configure might be named ConfigureDevelopment
// or something similar.
//
// Additionally, a startup class could be called anything and wired up explicitly.
//
// Since we already are analyzing the symbol it should be cheap to do a pass over the members.
var members = type.GetMembers();
for (var i = 0; i < members.Length; i++)
{
if (members[i] is IMethodSymbol method && (IsConfigureServices(symbols, method) || IsConfigure(symbols, method)))
{
return true;
}
}
return false;
}
// Based on StartupLoader. The philosophy is that we want to do analysis only on things
// that would be recognized as a ConfigureServices method to avoid false positives.
//
// The ConfigureServices method follows the naming pattern `Configure{Environment?}Services` (ignoring case).
// The ConfigureServices method must be public.
// The ConfigureServices method can be instance or static.
// The ConfigureServices method cannot have other parameters besides IServiceCollection.
//
// The ConfigureServices method does not actually need to accept IServiceCollection
// but we exclude that case because a ConfigureServices method that doesn't accept an
// IServiceCollection can't do anything interesting to analysis.
public static bool IsConfigureServices(StartupSymbols symbols, IMethodSymbol symbol)
{
if (symbol == null)
{
throw new ArgumentNullException(nameof(symbol));
}
if (symbol.DeclaredAccessibility != Accessibility.Public)
{
return false;
}
if (symbol.Name == null ||
!symbol.Name.StartsWith(SymbolNames.ConfigureServicesMethodPrefix, StringComparison.OrdinalIgnoreCase) ||
!symbol.Name.EndsWith(SymbolNames.ConfigureServicesMethodSuffix, StringComparison.OrdinalIgnoreCase))
{
return false;
}
if (symbol.Parameters.Length != 1)
{
return false;
}
if (symbol.Parameters[0].Type != symbols.IServiceCollection)
{
return false;
}
return true;
}
// Based on StartupLoader. The philosophy is that we want to do analysis only on things
// that would be recognized as a Configure method to avoid false positives.
//
// The Configure method follows the naming pattern `Configure{Environment?}` (ignoring case).
// The Configure method must be public.
// The Configure method can be instance or static.
// The Configure method *can* have other parameters besides IApplicationBuilder.
//
// The Configure method does not actually need to accept IApplicationBuilder
// but we exclude that case because a Configure method that doesn't accept an
// IApplicationBuilder can't do anything interesting to analysis.
public static bool IsConfigure(StartupSymbols symbols, IMethodSymbol symbol)
{
if (symbol == null)
{
throw new ArgumentNullException(nameof(symbol));
}
if (symbol.DeclaredAccessibility != Accessibility.Public)
{
return false;
}
if (symbol.Name == null ||
!symbol.Name.StartsWith(SymbolNames.ConfigureMethodPrefix, StringComparison.OrdinalIgnoreCase))
{
return false;
}
// IApplicationBuilder can appear in any parameter, but must appear.
for (var i = 0; i < symbol.Parameters.Length; i++)
{
if (symbol.Parameters[i].Type == symbols.IApplicationBuilder)
{
return true;
}
}
return false;
}
}
}

View File

@ -0,0 +1,22 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.CodeAnalysis;
namespace Microsoft.AspNetCore.Analyzers
{
internal class StartupSymbols
{
public StartupSymbols(Compilation compilation)
{
IApplicationBuilder = compilation.GetTypeByMetadataName(SymbolNames.IApplicationBuilder.MetadataName);
IServiceCollection = compilation.GetTypeByMetadataName(SymbolNames.IServiceCollection.MetadataName);
}
public bool HasRequiredSymbols => IApplicationBuilder != null && IServiceCollection != null;
public INamedTypeSymbol IApplicationBuilder { get; }
public INamedTypeSymbol IServiceCollection { get; }
}
}

View File

@ -0,0 +1,26 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.CodeAnalysis;
namespace Microsoft.AspNetCore.Analyzers
{
internal static class SymbolNames
{
public const string ConfigureServicesMethodPrefix = "Configure";
public const string ConfigureServicesMethodSuffix = "Services";
public const string ConfigureMethodPrefix = "Configure";
public static class IApplicationBuilder
{
public const string MetadataName = "Microsoft.AspNetCore.Builder.IApplicationBuilder";
}
public static class IServiceCollection
{
public const string MetadataName = "Microsoft.Extensions.DependencyInjection.IServiceCollection";
}
}
}

View File

@ -0,0 +1,59 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Testing;
using Microsoft.AspNetCore.Testing.xunit;
using Microsoft.CodeAnalysis;
namespace Microsoft.AspNetCore.Analyzers
{
public abstract class AnalyzerTestBase
{
private static readonly string ProjectDirectory = GetProjectDirectory();
public TestSource Read(string source)
{
var filePath = Path.Combine(ProjectDirectory, "TestFiles", GetType().Name, source);
if (!File.Exists(filePath))
{
throw new FileNotFoundException($"TestFile {source} could not be found at {filePath}.", filePath);
}
var fileContent = File.ReadAllText(filePath);
return TestSource.Read(fileContent);
}
public Project CreateProject(string source)
{
if (!source.EndsWith(".cs"))
{
source = source + ".cs";
}
var read = Read(source);
return DiagnosticProject.Create(GetType().Assembly, new[] { read.Source, });
}
public Task<Compilation> CreateCompilationAsync(string source)
{
return CreateProject(source).GetCompilationAsync();
}
private static string GetProjectDirectory()
{
// On helix we use the published test files
if (SkipOnHelixAttribute.OnHelix())
{
return AppContext.BaseDirectory;
}
var solutionDirectory = TestPathUtilities.GetSolutionRootDirectory("Analyzers");
var projectDirectory = Path.Combine(solutionDirectory, "Analyzers", "test");
return projectDirectory;
}
}
}

View File

@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PreserveCompilationContext>true</PreserveCompilationContext>
<RootNamespace>Microsoft.AspNetCore.Analyzers</RootNamespace>
<!-- https://github.com/aspnet/AspNetCore/issues/6549 -->
<BuildHelixPayload>false</BuildHelixPayload>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(SharedSourceRoot)test\SkipOnHelixAttribute.cs" />
<Content Include="TestFiles\**\*.*" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\src\Microsoft.AspNetCore.Analyzers.csproj" />
<Reference Include="Microsoft.AspNetCore.Analyzer.Testing" />
<Reference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" />
<!--
These tests include startup code for most parts of our stack. This list will grow as we add more.
-->
<Reference Include="Microsoft.AspNetCore.Components.Server" />
<Reference Include="Microsoft.AspNetCore.Mvc" />
<Reference Include="Microsoft.AspNetCore.SignalR" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,142 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzers.TestFiles.StartupFactsTest;
using Microsoft.CodeAnalysis;
using Xunit;
namespace Microsoft.AspNetCore.Analyzers
{
public class StartupFactsTest : AnalyzerTestBase
{
[Theory]
[InlineData(nameof(BasicStartup), nameof(BasicStartup.ConfigureServices))]
[InlineData(nameof(EnvironmentStartup), nameof(EnvironmentStartup.ConfigureDevelopmentServices))]
[InlineData(nameof(EnvironmentStartup), nameof(EnvironmentStartup.configurePRODUCTIONservices))]
public async Task IsConfigureServices_FindsConfigureServicesMethod(string source, string methodName)
{
// Arrange
var compilation = await CreateCompilationAsync(source);
var symbols = new StartupSymbols(compilation);
var type = (INamedTypeSymbol)compilation.GetSymbolsWithName(source).Single();
var methods = type.GetMembers(methodName).Cast<IMethodSymbol>();
foreach (var method in methods)
{
// Act
var result = StartupFacts.IsConfigureServices(symbols, method);
// Assert
Assert.True(result);
}
}
[Theory]
[InlineData(nameof(NotAStartupClass), nameof(NotAStartupClass.ConfigureServices))]
[InlineData(nameof(NotAStartupClass), nameof(NotAStartupClass.ConfigureSrvces))]
// This is an interesting case where a method follows both naming conventions.
[InlineData(nameof(EnvironmentStartup), nameof(EnvironmentStartup.ConfigureDevelopmentServices2))]
public async Task IsConfigureServices_RejectsNonConfigureServicesMethod(string source, string methodName)
{
// Arrange
var compilation = await CreateCompilationAsync(source);
var symbols = new StartupSymbols(compilation);
var type = (INamedTypeSymbol)compilation.GetSymbolsWithName(source).Single();
var methods = type.GetMembers(methodName).Cast<IMethodSymbol>();
foreach (var method in methods)
{
// Act
var result = StartupFacts.IsConfigureServices(symbols, method);
// Assert
Assert.False(result);
}
}
[Theory]
[InlineData(nameof(BasicStartup), nameof(BasicStartup.Configure))]
[InlineData(nameof(EnvironmentStartup), nameof(EnvironmentStartup.configurePRODUCTION))]
[InlineData(nameof(EnvironmentStartup), nameof(EnvironmentStartup.ConfigureDevelopmentServices2))]
public async Task IsConfigure_FindsConfigureMethod(string source, string methodName)
{
// Arrange
var compilation = await CreateCompilationAsync(source);
var symbols = new StartupSymbols(compilation);
var type = (INamedTypeSymbol)compilation.GetSymbolsWithName(source).Single();
var methods = type.GetMembers(methodName).Cast<IMethodSymbol>();
foreach (var method in methods)
{
// Act
var result = StartupFacts.IsConfigure(symbols, method);
// Assert
Assert.True(result);
}
}
[Theory]
[InlineData(nameof(NotAStartupClass), nameof(NotAStartupClass.Configure))]
[InlineData(nameof(NotAStartupClass), nameof(NotAStartupClass.Configur))]
public async Task IsConfigure_RejectsNonConfigureMethod(string source, string methodName)
{
// Arrange
var compilation = await CreateCompilationAsync(source);
var symbols = new StartupSymbols(compilation);
var type = (INamedTypeSymbol)compilation.GetSymbolsWithName(source).Single();
var methods = type.GetMembers(methodName).Cast<IMethodSymbol>();
foreach (var method in methods)
{
// Act
var result = StartupFacts.IsConfigure(symbols, method);
// Assert
Assert.False(result);
}
}
[Theory]
[InlineData(nameof(BasicStartup))]
[InlineData(nameof(EnvironmentStartup))]
public async Task IsStartupClass_FindsStartupClass(string source)
{
// Arrange
var compilation = await CreateCompilationAsync(source);
var symbols = new StartupSymbols(compilation);
var type = (INamedTypeSymbol)compilation.GetSymbolsWithName(source).Single();
// Act
var result = StartupFacts.IsStartupClass(symbols, type);
// Assert
Assert.True(result);
}
[Theory]
[InlineData(nameof(NotAStartupClass))]
public async Task IsStartupClass_RejectsNotStartupClass(string source)
{
// Arrange
var compilation = await CreateCompilationAsync(source);
var symbols = new StartupSymbols(compilation);
var type = (INamedTypeSymbol)compilation.GetSymbolsWithName(source).Single();
// Act
var result = StartupFacts.IsStartupClass(symbols, type);
// Assert
Assert.False(result);
}
}
}

View File

@ -0,0 +1,19 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
namespace Microsoft.AspNetCore.Analyzers.TestFiles.StartupFactsTest
{
public class BasicStartup
{
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app)
{
}
}
}

View File

@ -0,0 +1,30 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Microsoft.AspNetCore.Analyzers.TestFiles.StartupFactsTest
{
public class EnvironmentStartup
{
public void ConfigureDevelopmentServices(IServiceCollection services)
{
}
public void configurePRODUCTIONservices(IServiceCollection services)
{
}
// Yes, this is technically a Configure method - if you have an Enviroment called DevelopmentServices2.
public static void ConfigureDevelopmentServices2(IConfiguration configuration, ILogger logger, IApplicationBuilder app)
{
}
public static void configurePRODUCTION(IConfiguration configuration, ILogger logger, IApplicationBuilder app)
{
}
}
}

View File

@ -0,0 +1,47 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace Microsoft.AspNetCore.Analyzers.TestFiles.StartupFactsTest
{
public class NotAStartupClass
{
// no args - not a ConfigureServices (technically it is, but we exclude this case).
public void ConfigureServices()
{
}
// extra arg - not a ConfigureServices
public void ConfigureServices(IServiceCollection services, string x)
{
}
// wrong name - not a ConfigureServices
public void ConfigureSrvces(IServiceCollection services)
{
}
// non-public - not a ConfigureServices
internal void ConfigureServices(IServiceCollection services)
{
}
// no IApplicationBuilder - not a Configure
public void Configure(IConfiguration configuration)
{
}
// wrong prefix - not a Configure
public void Configur(IApplicationBuilder app)
{
}
// non-public - not a Configure
internal void Configure(IApplicationBuilder app)
{
}
}
}

3
src/Analyzers/build.cmd Normal file
View File

@ -0,0 +1,3 @@
@ECHO OFF
SET RepoRoot=%~dp0..\..
%RepoRoot%\build.cmd -projects %~dp0\**\*.*proj %*

7
src/Analyzers/build.sh Normal file
View File

@ -0,0 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
repo_root="$DIR/../.."
"$repo_root/build.sh" --projects "$DIR/**/*.*proj" "$@"

View File

@ -0,0 +1,53 @@
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<!-- This does not represent the TFM for the code. It's only here because /t:Pack requires it. -->
<TargetFramework>netstandard1.0</TargetFramework>
<IsPackable>true</IsPackable>
<IsShipping>false</IsShipping>
<NoBuild>true</NoBuild>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<EnableDefaultItems>false</EnableDefaultItems>
<IncludeBuildOutput>false</IncludeBuildOutput>
<IncludeSymbols>false</IncludeSymbols>
<ContentTargetFolders>contentFiles</ContentTargetFolders>
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<DefaultExcludeItems>$(DefaultExcludeItems);$(BaseOutputPath);$(BaseIntermediateOutputPath);</DefaultExcludeItems>
<NoWarn>$(NoWarn);NU5105;CS8021</NoWarn>
<IsProjectReferenceProvider>false</IsProjectReferenceProvider>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildProjectDirectory)\**\*.cs" Exclude="$(DefaultExcludeItems)">
<Pack>true</Pack>
<PackagePath>$(ContentTargetFolders)\cs\netstandard1.0\shared\</PackagePath>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="../../Analyzers/src/StartupFacts.cs">
<Link>%(FileName)%(Extension)</Link>
<Pack>true</Pack>
<PackagePath>$(ContentTargetFolders)\cs\netstandard1.0\shared\</PackagePath>
</Compile>
<Compile Include="../../Analyzers/src/StartupSymbols.cs">
<Link>%(FileName)%(Extension)</Link>
<Pack>true</Pack>
<PackagePath>$(ContentTargetFolders)\cs\netstandard1.0\shared\</PackagePath>
</Compile>
<Compile Include="../../Analyzers/src/SymbolNames.cs">
<Link>%(FileName)%(Extension)</Link>
<Pack>true</Pack>
<PackagePath>$(ContentTargetFolders)\cs\netstandard1.0\shared\</PackagePath>
</Compile>
</ItemGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<!-- This project does not produce a binary. Disable the compiler. -->
<Target Name="Compile" />
<Target Name="CopyFilesToOutputDirectory" />
</Project>

View File

@ -0,0 +1,3 @@
@ECHO OFF
%~dp0..\..\startvs.cmd %~dp0Analyzers.sln

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<TargetFramework>netstandard2.0</TargetFramework>
<IncludeBuildOutput>false</IncludeBuildOutput>
<NoPackageAnalysis>true</NoPackageAnalysis>
<GenerateDocumentationFile>false</GenerateDocumentationFile>

View File

@ -5,7 +5,7 @@
<!-- This package is for internal use only. It contains analyzers that are bundled in the .NET Core WebSDK. -->
<IsShippingPackage>false</IsShippingPackage>
<TargetFramework>netstandard1.3</TargetFramework>
<TargetFramework>netstandard2.0</TargetFramework>
<IncludeBuildOutput>false</IncludeBuildOutput>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>

View File

@ -7,6 +7,7 @@ namespace Microsoft.AspNetCore.Analyzers
{
internal class StartupAnalysisContext
{
#pragma warning disable RS1012 // Start action has no registered actions.
public StartupAnalysisContext(OperationBlockStartAnalysisContext operationBlockStartAnalysisContext, StartupSymbols startupSymbols)
{
OperationBlockStartAnalysisContext = operationBlockStartAnalysisContext;
@ -16,5 +17,6 @@ namespace Microsoft.AspNetCore.Analyzers
public OperationBlockStartAnalysisContext OperationBlockStartAnalysisContext { get; }
public StartupSymbols StartupSymbols { get; }
#pragma warning restore RS1012 // Start action has no registered actions.
}
}

View File

@ -131,7 +131,7 @@ namespace Microsoft.AspNetCore.Analyzers
OnConfigureMethodFound(method);
}
}
#pragma warning disable RS1012 // Start action has no registered actions.
private bool IsStartupFile(OperationBlockStartAnalysisContext context)
{
foreach (var location in context.OwningSymbol.Locations)
@ -144,5 +144,6 @@ namespace Microsoft.AspNetCore.Analyzers
return false;
}
#pragma warning restore RS1012 // Start action has no registered actions.
}
}

View File

@ -37,6 +37,8 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
_diagnostic = diagnostic;
}
public override string EquivalenceKey => _diagnostic.Location.ToString();
public override string Title => "Add ProducesResponseType attributes.";
protected override async Task<Document> GetChangedDocumentAsync(CancellationToken cancellationToken)

View File

@ -17,6 +17,8 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
ApiDiagnosticDescriptors.API1000_ActionReturnsUndocumentedStatusCode.Id,
ApiDiagnosticDescriptors.API1001_ActionReturnsUndocumentedSuccessResult.Id);
public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer;
public sealed override Task RegisterCodeFixesAsync(CodeFixContext context)
{
if (context.Diagnostics.Length == 0)

View File

@ -5,7 +5,7 @@
<!-- This package is for internal use only. It contains analyzers that are bundled in the .NET Core WebSDK. -->
<IsShippingPackage>false</IsShippingPackage>
<TargetFramework>netstandard1.3</TargetFramework>
<TargetFramework>netstandard2.0</TargetFramework>
<IncludeBuildOutput>false</IncludeBuildOutput>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>