<!--

This file contains a list of all the external dependencies used in ASP.NET Core. These dependencies
are expressed as `<LatestPackageReference>`. These are used as inputs reference resolution, and
may be turned into `<PackageReference>` items in projects.
-->
<Project>
  <PropertyGroup>
    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
  </PropertyGroup>

  <ItemGroup Label=".NET team dependencies">
    <LatestPackageReference Include="Microsoft.AspNetCore.Razor.Language" />
    <LatestPackageReference Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" />
    <LatestPackageReference Include="Microsoft.Azure.SignalR" />
    <LatestPackageReference Include="Microsoft.Bcl.HashCode" />
    <LatestPackageReference Include="Microsoft.Bcl.TimeProvider" />
    <LatestPackageReference Include="Microsoft.Css.Parser" />
    <LatestPackageReference Include="Microsoft.CodeAnalysis.Common" />
    <LatestPackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" />
    <LatestPackageReference Include="Microsoft.CodeAnalysis.CSharp" />
    <LatestPackageReference Include="Microsoft.CodeAnalysis.ExternalAccess.AspNetCore" />
    <LatestPackageReference Include="Microsoft.CodeAnalysis.Razor" />
    <LatestPackageReference Include="Microsoft.CSharp" />
    <LatestPackageReference Include="Microsoft.Extensions.Caching.Abstractions" />
    <LatestPackageReference Include="Microsoft.Extensions.Caching.Memory" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration.Abstractions" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration.Binder" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration.CommandLine" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration.Ini" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration.Json" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration.Xml" />
    <LatestPackageReference Include="Microsoft.Extensions.Configuration" />
    <LatestPackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
    <LatestPackageReference Include="Microsoft.Extensions.DependencyInjection" />
    <LatestPackageReference Include="Microsoft.Extensions.DependencyModel" />
    <LatestPackageReference Include="Microsoft.Extensions.DiagnosticAdapter" />
    <LatestPackageReference Include="Microsoft.Extensions.Diagnostics.Abstractions" />
    <LatestPackageReference Include="Microsoft.Extensions.Diagnostics" />
    <LatestPackageReference Include="Microsoft.Extensions.FileProviders.Abstractions" />
    <LatestPackageReference Include="Microsoft.Extensions.FileProviders.Composite" />
    <LatestPackageReference Include="Microsoft.Extensions.FileProviders.Physical" />
    <LatestPackageReference Include="Microsoft.Extensions.FileSystemGlobbing" />
    <LatestPackageReference Include="Microsoft.Extensions.HostFactoryResolver.Sources" />
    <LatestPackageReference Include="Microsoft.Extensions.Hosting.Abstractions" />
    <LatestPackageReference Include="Microsoft.Extensions.Hosting" />
    <LatestPackageReference Include="Microsoft.Extensions.Http" />
    <LatestPackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
    <LatestPackageReference Include="Microsoft.Extensions.Logging.Configuration" />
    <LatestPackageReference Include="Microsoft.Extensions.Logging.Console" />
    <LatestPackageReference Include="Microsoft.Extensions.Logging.Debug" />
    <LatestPackageReference Include="Microsoft.Extensions.Logging.EventSource" />
    <LatestPackageReference Include="Microsoft.Extensions.Logging.EventLog" />
    <LatestPackageReference Include="Microsoft.Extensions.Logging.TraceSource" />
    <LatestPackageReference Include="Microsoft.Extensions.Logging" />
    <LatestPackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" />
    <LatestPackageReference Include="Microsoft.Extensions.Options.DataAnnotations" />
    <LatestPackageReference Include="Microsoft.Extensions.Options" />
    <LatestPackageReference Include="Microsoft.Extensions.Primitives" />
    <LatestPackageReference Include="Microsoft.Extensions.Diagnostics.Testing" />
    <LatestPackageReference Include="Microsoft.Extensions.TimeProvider.Testing" />
    <LatestPackageReference Include="Microsoft.Win32.Registry" />
    <LatestPackageReference Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit" />
    <LatestPackageReference Include="Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit" />
    <LatestPackageReference Include="Microsoft.OpenApi" />
    <LatestPackageReference Include="Microsoft.OpenApi.Readers" />
    <LatestPackageReference Include="System.Buffers" />
    <LatestPackageReference Include="System.CodeDom" />
    <LatestPackageReference Include="System.CommandLine.Experimental" />
    <LatestPackageReference Include="System.ComponentModel" />
    <LatestPackageReference Include="System.ComponentModel.Annotations" />
    <LatestPackageReference Include="System.Configuration.ConfigurationManager" />
    <LatestPackageReference Include="System.Diagnostics.DiagnosticSource" />
    <LatestPackageReference Include="System.Diagnostics.EventLog" />
    <LatestPackageReference Include="System.DirectoryServices.Protocols" />
    <LatestPackageReference Include="System.Drawing.Common" />
    <LatestPackageReference Include="System.IdentityModel.Tokens.Jwt" />
    <LatestPackageReference Include="System.IO.Pipelines" />
    <LatestPackageReference Include="System.Net.Http" />
    <LatestPackageReference Include="System.Net.Http.Json" />
    <LatestPackageReference Include="System.Net.Sockets" />
    <LatestPackageReference Include="System.Net.ServerSentEvents" />
    <LatestPackageReference Include="System.Private.Uri" />
    <LatestPackageReference Include="System.Reflection.Metadata" />
    <LatestPackageReference Include="System.Runtime.InteropServices.RuntimeInformation" />
    <LatestPackageReference Include="System.Security.Cryptography.Pkcs" />
    <LatestPackageReference Include="System.Security.Cryptography.X509Certificates" />
    <LatestPackageReference Include="System.Security.Cryptography.Xml" />
    <LatestPackageReference Include="System.Security.Permissions" />
    <LatestPackageReference Include="System.Security.Principal.Windows" />
    <LatestPackageReference Include="System.Text.Encodings.Web" />
    <LatestPackageReference Include="System.Text.Json" />
    <LatestPackageReference Include="System.Threading.AccessControl" />
    <LatestPackageReference Include="System.Threading.Channels" />
    <LatestPackageReference Include="System.Threading.RateLimiting" />
    <LatestPackageReference Include="System.ValueTuple" />

    <!-- Runtime packages required for crossgen -->
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.win-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.win-x86" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.win-arm" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.win-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.osx-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.osx-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.linux-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.linux-arm" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.linux-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.linux-musl-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.linux-musl-arm" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.linux-musl-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.freebsd-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.freebsd-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Runtime.$(TargetRuntimeIdentifier)" Condition=" '$(DotNetBuildSourceOnly)' == 'true'" />

    <!-- Crossgen2 compiler -->
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.win-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.win-x86" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.win-arm" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.win-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.osx-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.osx-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.linux-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.linux-arm" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.linux-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.linux-musl-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.linux-musl-arm" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.linux-musl-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.freebsd-x64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.freebsd-arm64" />
    <_LatestRuntimePackageReference Include="Microsoft.NETCore.App.Crossgen2.$(TargetRuntimeIdentifier)" Condition=" '$(DotNetBuildSourceOnly)' == 'true' " />

    <!-- Remove duplicates potentially introduced by the 'unknown' target runtime identifier in source-only modes. -->
    <LatestPackageReference Include="@(_LatestRuntimePackageReference->Distinct())" />
  </ItemGroup>

  <ItemGroup Label=".NET team dependencies (Non-source-build)" Condition="'$(DotNetBuildSourceOnly)' != 'true'">
    <LatestPackageReference Include="Microsoft.AspNet.WebApi.Client" />
    <LatestPackageReference Include="Microsoft.AspNetCore.AzureAppServices.SiteExtension.6.0.x64" />
    <LatestPackageReference Include="Microsoft.AspNetCore.AzureAppServices.SiteExtension.6.0.x86" />
    <LatestPackageReference Include="Microsoft.AspNetCore.AzureAppServices.SiteExtension.8.0.x64" />
    <LatestPackageReference Include="Microsoft.AspNetCore.AzureAppServices.SiteExtension.8.0.x86" />
    <LatestPackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Runtime" />
    <LatestPackageReference Include="Microsoft.Internal.Runtime.AspNetCore.Transport" />
    <LatestPackageReference Include="Microsoft.Bcl.AsyncInterfaces" />
    <LatestPackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" />
    <LatestPackageReference Include="Microsoft.DotNet.RemoteExecutor" />
    <LatestPackageReference Include="Microsoft.EntityFrameworkCore.Design" />
    <LatestPackageReference Include="Microsoft.EntityFrameworkCore.InMemory" />
    <LatestPackageReference Include="Microsoft.EntityFrameworkCore.Relational" />
    <LatestPackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
    <LatestPackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" />
    <LatestPackageReference Include="Microsoft.EntityFrameworkCore.Tools" />
    <LatestPackageReference Include="Microsoft.EntityFrameworkCore" />
    <LatestPackageReference Include="Microsoft.Extensions.Caching.SqlServer" />
    <LatestPackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" />
    <LatestPackageReference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" />
    <LatestPackageReference Include="Microsoft.IdentityModel.Protocols.WsFederation" />
    <LatestPackageReference Include="Microsoft.Internal.AspNetCore.H2Spec.All" />
    <LatestPackageReference Include="Microsoft.NETCore.Windows.ApiSets" />
    <LatestPackageReference Include="Microsoft.NETCore.BrowserDebugHost.Transport" />
    <LatestPackageReference Include="Microsoft.Owin.Security.Cookies" />
    <LatestPackageReference Include="Microsoft.Owin.Testing" />
    <LatestPackageReference Include="Microsoft.Web.Administration" />
    <LatestPackageReference Include="Microsoft.Web.Xdt" />
    <LatestPackageReference Include="NETStandard.Library" />
    <LatestPackageReference Include="System.Net.Experimental.MsQuic" />
    <LatestPackageReference Include="System.Net.Http.WinHttpHandler" />
    <LatestPackageReference Include="System.ServiceProcess.ServiceController" />
    <LatestPackageReference Include="System.Threading.Tasks.Extensions" />
  </ItemGroup>

  <ItemGroup Label="MSBuild">
    <LatestPackageReference Include="Microsoft.Build" />
    <LatestPackageReference Include="Microsoft.Build.Framework" />
    <LatestPackageReference Include="Microsoft.Build.Locator" />
    <LatestPackageReference Include="Microsoft.Build.Utilities.Core" />
  </ItemGroup>

  <ItemGroup Label="External dependencies available in source build" >
    <LatestPackageReference Include="Newtonsoft.Json" />
  </ItemGroup>

  <ItemGroup Label="External dependencies" Condition="'$(DotNetBuildSourceOnly)' != 'true'">
    <LatestPackageReference Include="AngleSharp" />
    <LatestPackageReference Include="Azure.Identity" />
    <LatestPackageReference Include="BenchmarkDotNet" />
    <LatestPackageReference Include="CommandLineParser" />
    <LatestPackageReference Include="FSharp.Core" />
    <LatestPackageReference Include="Google.Api.CommonProtos" />
    <LatestPackageReference Include="Google.Protobuf" />
    <LatestPackageReference Include="Grpc.AspNetCore" />
    <LatestPackageReference Include="Grpc.AspNetCore.Server" />
    <LatestPackageReference Include="Grpc.Auth" />
    <LatestPackageReference Include="Grpc.Net.Client" />
    <LatestPackageReference Include="Grpc.Tools" />
    <LatestPackageReference Include="MessagePack" />
    <LatestPackageReference Include="MessagePackAnalyzer" />
    <LatestPackageReference Include="Microsoft.Data.SqlClient" />
    <LatestPackageReference Include="Microsoft.Windows.CsWin32" />
    <LatestPackageReference Include="Mono.Cecil" />
    <LatestPackageReference Include="Mono.TextTemplating" />
    <LatestPackageReference Include="Moq" />
    <LatestPackageReference Include="Newtonsoft.Json.Bson" />
    <LatestPackageReference Include="NSwag.ApiDescription.Client" />
    <LatestPackageReference Include="NuGet.Frameworks" />
    <LatestPackageReference Include="NuGet.Versioning" />
    <LatestPackageReference Include="Photino.NET" />
    <LatestPackageReference Include="Microsoft.Playwright" />
    <LatestPackageReference Include="Polly" />
    <LatestPackageReference Include="Polly.Extensions.Http" />
    <LatestPackageReference Include="Selenium.Support" />
    <LatestPackageReference Include="Selenium.WebDriver" />
    <LatestPackageReference Include="Selenium.WebDriver.ChromeDriver" />
    <LatestPackageReference Include="Serilog.Extensions.Logging" />
    <LatestPackageReference Include="Serilog.Sinks.File" />
    <LatestPackageReference Include="StackExchange.Redis" />
    <LatestPackageReference Include="Swashbuckle.AspNetCore" />
    <LatestPackageReference Include="System.Reactive.Linq" />
    <LatestPackageReference Include="Verify.Xunit" />
    <LatestPackageReference Include="xunit.abstractions" />
    <LatestPackageReference Include="xunit.analyzers" />
    <LatestPackageReference Include="xunit.assert" />
    <LatestPackageReference Include="xunit.extensibility.core" />
    <LatestPackageReference Include="xunit.extensibility.execution" />
  </ItemGroup>

  <ItemGroup Label="Dependencies with versions.">

    <!-- Get name prefixes for version properties. -->
    <LatestPackageReference Update="@(LatestPackageReference)">
      <VersionName>$([System.String]::new('%(Identity)').Replace('.',''))</VersionName>
    </LatestPackageReference>

    <!-- Get versions. -->
    <LatestPackageReference Update="@(LatestPackageReference)">
      <Version>$(%(VersionName)Version)</Version>

      <!-- Remove excess metadata. -->
      <VersionName />
    </LatestPackageReference>

    <!--
      Special case RID-specific Microsoft.NETCore.App.Runtime dependencies to ease new RID additions. Map from a
      single property to Version metadata for all RIDs.
    -->
    <LatestPackageReference Update="@(LatestPackageReference->WithMetadataValue('Version', ''))">
      <Version
          Condition=" $([System.String]::new('%(Identity)').StartsWith('Microsoft.NETCore.App.Runtime.')) or $([System.String]::new('%(Identity)').StartsWith('Microsoft.NETCore.App.Crossgen2.'))">$(MicrosoftNETCoreAppRuntimeVersion)</Version>
    </LatestPackageReference>
  </ItemGroup>
</Project>
