Merge branch 'release/2.1' into release/2.2
This commit is contained in:
commit
feb641ddda
|
|
@ -11,7 +11,6 @@
|
|||
<RepositoryBuildOrder Include="EntityFrameworkCore" Order="8" />
|
||||
<RepositoryBuildOrder Include="ServerTests" Order="11" RootPath="$(RepositoryRoot)src\ServerTests\" />
|
||||
<RepositoryBuildOrder Include="Security" Order="13" RootPath="$(RepositoryRoot)src\Security\" />
|
||||
<RepositoryBuildOrder Include="MetaPackages" Order="13" RootPath="$(RepositoryRoot)src\MetaPackages\" />
|
||||
<RepositoryBuildOrder Include="Mvc" Order="14" RootPath="$(RepositoryRoot)src\Mvc\" />
|
||||
<RepositoryBuildOrder Include="AADIntegration" Order="15" RootPath="$(RepositoryRoot)src\AADIntegration\" />
|
||||
<RepositoryBuildOrder Include="Identity" Order="15" RootPath="$(RepositoryRoot)src\Identity\" />
|
||||
|
|
|
|||
|
|
@ -36,14 +36,12 @@
|
|||
<InternalAspNetCoreAnalyzersPackageVersion>2.2.0</InternalAspNetCoreAnalyzersPackageVersion>
|
||||
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>2.2.0</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
|
||||
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>2.2.0</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
|
||||
<MicrosoftAspNetCoreCertificatesGenerationSourcesPackageVersion>2.2.0</MicrosoftAspNetCoreCertificatesGenerationSourcesPackageVersion>
|
||||
<MicrosoftAspNetCoreTestingPackageVersion>2.2.0</MicrosoftAspNetCoreTestingPackageVersion>
|
||||
<MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>2.2.0</MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>
|
||||
<MicrosoftExtensionsCachingAbstractionsPackageVersion>2.2.0</MicrosoftExtensionsCachingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsCachingMemoryPackageVersion>2.2.0</MicrosoftExtensionsCachingMemoryPackageVersion>
|
||||
<MicrosoftExtensionsCachingRedisPackageVersion>2.2.0</MicrosoftExtensionsCachingRedisPackageVersion>
|
||||
<MicrosoftExtensionsCachingSqlServerPackageVersion>2.2.0</MicrosoftExtensionsCachingSqlServerPackageVersion>
|
||||
<MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion>2.2.0</MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion>
|
||||
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>2.2.0</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>2.2.0</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>2.2.0</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
|
||||
|
|
@ -57,7 +55,6 @@
|
|||
<MicrosoftExtensionsConfigurationPackageVersion>2.2.0</MicrosoftExtensionsConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>2.2.0</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationXmlPackageVersion>2.2.0</MicrosoftExtensionsConfigurationXmlPackageVersion>
|
||||
<MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>2.2.0</MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>2.2.0</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionPackageVersion>2.2.0</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionSpecificationTestsPackageVersion>2.2.0</MicrosoftExtensionsDependencyInjectionSpecificationTestsPackageVersion>
|
||||
|
|
@ -85,23 +82,15 @@
|
|||
<MicrosoftExtensionsLoggingTestingPackageVersion>2.2.0</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>2.2.0</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
|
||||
<MicrosoftExtensionsNonCapturingTimerSourcesPackageVersion>2.2.0</MicrosoftExtensionsNonCapturingTimerSourcesPackageVersion>
|
||||
<MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>2.2.0</MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>
|
||||
<MicrosoftExtensionsObjectPoolPackageVersion>2.2.0</MicrosoftExtensionsObjectPoolPackageVersion>
|
||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>2.2.0</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>2.2.0</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>2.2.0</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>2.2.0</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
|
||||
<MicrosoftExtensionsPrimitivesPackageVersion>2.2.0</MicrosoftExtensionsPrimitivesPackageVersion>
|
||||
<MicrosoftExtensionsProcessSourcesPackageVersion>2.2.0</MicrosoftExtensionsProcessSourcesPackageVersion>
|
||||
<MicrosoftExtensionsPropertyActivatorSourcesPackageVersion>2.2.0</MicrosoftExtensionsPropertyActivatorSourcesPackageVersion>
|
||||
<MicrosoftExtensionsPropertyHelperSourcesPackageVersion>2.2.0</MicrosoftExtensionsPropertyHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsRazorViewsSourcesPackageVersion>2.2.0</MicrosoftExtensionsRazorViewsSourcesPackageVersion>
|
||||
<MicrosoftExtensionsSecurityHelperSourcesPackageVersion>2.2.0</MicrosoftExtensionsSecurityHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsStackTraceSourcesPackageVersion>2.2.0</MicrosoftExtensionsStackTraceSourcesPackageVersion>
|
||||
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>2.2.0</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>2.2.0</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
|
||||
<MicrosoftExtensionsWebEncodersPackageVersion>2.2.0</MicrosoftExtensionsWebEncodersPackageVersion>
|
||||
<MicrosoftExtensionsWebEncodersSourcesPackageVersion>2.2.0</MicrosoftExtensionsWebEncodersSourcesPackageVersion>
|
||||
|
||||
<!-- These dependencies are temporary while we refactor package refs into project refs. -->
|
||||
<MicrosoftExtensionsBuffersTestingSourcesPackageVersion>2.2.0</MicrosoftExtensionsBuffersTestingSourcesPackageVersion>
|
||||
|
|
|
|||
|
|
@ -13,15 +13,12 @@
|
|||
<ExternalDependency Include="Internal.AspNetCore.Analyzers" Version="$(InternalAspNetCoreAnalyzersPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.AspNetCore.Analyzer.Testing" Version="$(MicrosoftAspNetCoreAnalyzerTestingPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.AspNetCore.BenchmarkRunner.Sources" Version="$(MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.AspNetCore.Certificates.Generation.Sources" Version="$(MicrosoftAspNetCoreCertificatesGenerationSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.AspNetCore.Testing" Version="$(MicrosoftAspNetCoreTestingPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.ActivatorUtilities.Sources" Version="$(MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Caching.Abstractions" Version="$(MicrosoftExtensionsCachingAbstractionsPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Caching.Memory" Version="$(MicrosoftExtensionsCachingMemoryPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Caching.Redis" Version="$(MicrosoftExtensionsCachingRedisPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Caching.SqlServer" Version="$(MicrosoftExtensionsCachingSqlServerPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" Version="$(MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" Version="$(MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.CommandLineUtils.Sources" Version="$(MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Configuration.Abstractions" Version="$(MicrosoftExtensionsConfigurationAbstractionsPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="$(MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion)" />
|
||||
|
|
@ -35,7 +32,6 @@
|
|||
<ExternalDependency Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftExtensionsConfigurationUserSecretsPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Configuration.Xml" Version="$(MicrosoftExtensionsConfigurationXmlPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Configuration" Version="$(MicrosoftExtensionsConfigurationPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.CopyOnWriteDictionary.Sources" Version="$(MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.DependencyInjection.Specification.Tests" Version="$(MicrosoftExtensionsDependencyInjectionSpecificationTestsPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.DependencyInjection" Version="$(MicrosoftExtensionsDependencyInjectionPackageVersion)" />
|
||||
|
|
@ -63,22 +59,14 @@
|
|||
<ExternalDependency Include="Microsoft.Extensions.Logging.TraceSource" Version="$(MicrosoftExtensionsLoggingTraceSourcePackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsLoggingPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.NonCapturingTimer.Sources" Version="$(MicrosoftExtensionsNonCapturingTimerSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" Version="$(MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.ObjectPool" Version="$(MicrosoftExtensionsObjectPoolPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Options.DataAnnotations" Version="$(MicrosoftExtensionsOptionsDataAnnotationsPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsOptionsPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.ParameterDefaultValue.Sources" Version="$(MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Primitives" Version="$(MicrosoftExtensionsPrimitivesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.Process.Sources" Version="$(MicrosoftExtensionsProcessSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.PropertyActivator.Sources" Version="$(MicrosoftExtensionsPropertyActivatorSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.PropertyHelper.Sources" Version="$(MicrosoftExtensionsPropertyHelperSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.RazorViews.Sources" Version="$(MicrosoftExtensionsRazorViewsSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.SecurityHelper.Sources" Version="$(MicrosoftExtensionsSecurityHelperSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.StackTrace.Sources" Version="$(MicrosoftExtensionsStackTraceSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.TypeNameHelper.Sources" Version="$(MicrosoftExtensionsTypeNameHelperSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.ValueStopwatch.Sources" Version="$(MicrosoftExtensionsValueStopwatchSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.WebEncoders.Sources" Version="$(MicrosoftExtensionsWebEncodersSourcesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.WebEncoders" Version="$(MicrosoftExtensionsWebEncodersPackageVersion)" />
|
||||
<!-- These dependencies are temporary while we refactor package refs into project refs. -->
|
||||
<ExternalDependency Include="Microsoft.AspNetCore.Server.IntegrationTesting" Version="$(MicrosoftAspNetCoreServerIntegrationTestingPackageVersion)" />
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@
|
|||
</ProjectToBuild>
|
||||
|
||||
<ProjectToBuild Include="
|
||||
$(RepositoryRoot)src\DefaultBuilder\**\*.*proj;
|
||||
$(RepositoryRoot)src\Features\JsonPatch\**\*.*proj;
|
||||
$(RepositoryRoot)src\DataProtection\**\*.*proj;
|
||||
$(RepositoryRoot)src\Antiforgery\**\*.*proj;
|
||||
|
|
@ -86,6 +87,7 @@
|
|||
$(RepositoryRoot)src\Html\**\*.*proj;
|
||||
$(RepositoryRoot)src\Servers\**\*.csproj;
|
||||
$(RepositoryRoot)src\Servers\**\*.pkgproj;
|
||||
$(RepositoryRoot)src\Shared\**\*.*proj;
|
||||
$(RepositoryRoot)src\Tools\**\*.*proj;
|
||||
$(RepositoryRoot)src\Middleware\**\*.*proj;
|
||||
"
|
||||
|
|
|
|||
|
|
@ -61,7 +61,11 @@
|
|||
<ProjectListFile>$(MSBuildThisFileDirectory)..\eng\ProjectReferences.props</ProjectListFile>
|
||||
<ProjectListContent>
|
||||
< for the exact implementation of custom
|
||||
`<Reference>` resolutions.
|
||||
|
||||
The requirements that led to this system are:
|
||||
|
||||
* Versions of external dependencies should be consistent.
|
||||
* Servicing updates of ASP.NET Core should minimize the number of assemblies which need to re-build and re-ship.
|
||||
* Newer versions of packages should not have lower dependency versions than previous releases.
|
||||
* Minimize the cascading effect of servicing updates where possible by keeping a consistent baseline of dependencies.
|
||||
|
||||
## Recommendations for writing a .csproj
|
||||
|
||||
* Use `<Reference>`
|
||||
* Do not use `<PackageReference>`
|
||||
* Only use `<ProjectReference>` in test projects
|
||||
* Name the .csproj file to match the assembly name.
|
||||
* Run `build.cmd /t:GenerateProjectList` when adding new projects
|
||||
* Use [eng/tools/BaseLineGenerator/](/eng/tools/BaselineGenerator/README.md) if you need to update baselines.
|
||||
|
||||
## Important files
|
||||
|
||||
* [eng/Baseline.xml](/eng/Baseline.xml) - this contains the 'baseline' of the latest servicing release for this branch. It should be modified and used to update the generated file, Baseline.Designer.props.
|
||||
* [eng/Dependencies.props](/eng/Dependencies.props) - contains a list of all package references that might be used in the repo.
|
||||
* [eng/PatchConfig.props](/eng/PatchConfig.props) - lists which assemblies or packages are patching in the current build.
|
||||
* [eng/ProjectReferences.props](/eng/ProjectReferences.props) - lists which assemblies or packages might be available to be referenced as a local project
|
||||
* [eng/Versions.props](/eng/Versions.props) - contains a list of versions which may be updated by automation.
|
||||
|
|
@ -20,14 +20,6 @@
|
|||
<PropertyGroup Condition=" '$(PackageId)' == 'dotnet-watch' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AspNetCoreModule-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AspNetCoreModule' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AspNetCoreModuleV2-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AspNetCoreModuleV2' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Antiforgery-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Antiforgery' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
|
|
@ -39,6 +31,14 @@
|
|||
<BaselinePackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.ObjectPool" Version="[2.2.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AspNetCoreModule-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AspNetCoreModule' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.AspNetCoreModuleV2-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.AspNetCoreModuleV2' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Authentication.Abstractions-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Authentication.Abstractions' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
|
|
@ -445,6 +445,17 @@
|
|||
<BaselinePackageReference Include="Microsoft.Win32.Registry" Version="[4.5.0, )" />
|
||||
<BaselinePackageReference Include="System.Security.Principal.Windows" Version="[4.5.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Server.IIS-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Server.IIS' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Server.IIS' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.Core" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.5.2, )" />
|
||||
<BaselinePackageReference Include="System.Security.Principal.Windows" Version="[4.5.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Server.IISIntegration-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Server.IISIntegration' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
|
|
@ -464,17 +475,6 @@
|
|||
<BaselinePackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="[4.5.1, )" />
|
||||
<BaselinePackageReference Include="System.Security.Principal.Windows" Version="[4.5.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Server.IIS-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Server.IIS' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Server.IIS' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Authentication.Core" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="System.IO.Pipelines" Version="[4.5.2, )" />
|
||||
<BaselinePackageReference Include="System.Security.Principal.Windows" Version="[4.5.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore.Server.Kestrel.Core-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Server.Kestrel.Core' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
|
|
@ -611,6 +611,30 @@
|
|||
<BaselinePackageReference Include="Microsoft.Net.Http.Headers" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="System.Text.Encodings.Web" Version="[4.5.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.AspNetCore-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore' AND '$(TargetFramework)' == 'netstandard2.0' ">
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.HostFiltering" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Hosting" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Routing" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Server.IIS" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Https" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration.Json" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Console" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.Debug" Version="[2.2.0, )" />
|
||||
<BaselinePackageReference Include="Microsoft.Extensions.Logging.EventSource" Version="[2.2.0, )" />
|
||||
</ItemGroup>
|
||||
<!-- Package: Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore-->
|
||||
<PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore' ">
|
||||
<BaselinePackageVersion>2.2.0</BaselinePackageVersion>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,17 @@
|
|||
<!--
|
||||
|
||||
This file contains a list of all the packages and their versions which were released in the last servicing
|
||||
build of ASP.NET Core 2.2.x. Update this list when preparing for a new patch.
|
||||
|
||||
-->
|
||||
<Baseline Version="2.2.0">
|
||||
<Package Id="dotnet-dev-certs" Version="2.2.0" />
|
||||
<Package Id="dotnet-sql-cache" Version="2.2.0" />
|
||||
<Package Id="dotnet-user-secrets" Version="2.2.0" />
|
||||
<Package Id="dotnet-watch" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Antiforgery" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.AspNetCoreModule" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.AspNetCoreModuleV2" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Antiforgery" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Abstractions" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Authentication.Core" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Connections.Abstractions" Version="2.2.0" />
|
||||
|
|
@ -48,8 +54,8 @@
|
|||
<Package Id="Microsoft.AspNetCore.Routing.Abstractions" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Routing" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.HttpSys" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.IISIntegration" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.IIS" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.IISIntegration" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.Kestrel.Core" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.Kestrel.Https" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" Version="2.2.0" />
|
||||
|
|
@ -61,6 +67,7 @@
|
|||
<Package Id="Microsoft.AspNetCore.TestHost" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.WebSockets" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
|
||||
<Package Id="Microsoft.AspNetCore" Version="2.2.0" />
|
||||
<Package Id="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="2.2.0" />
|
||||
<Package Id="Microsoft.Net.Http.Headers" Version="2.2.0" />
|
||||
</Baseline>
|
||||
|
|
|
|||
|
|
@ -1,14 +1,27 @@
|
|||
<!-- This file is a work in progress as we merge repos and move content here from build/dependencies.props. -->
|
||||
<!--
|
||||
|
||||
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.
|
||||
|
||||
`<BaselinePackageReference>` items should not be in this file. Those items appear in Baseline.Designer.props
|
||||
and are generated based on the last package release.
|
||||
-->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<LatestPackageReference>
|
||||
<!-- Required. Expected to be an exact package version. Wildcards are not allowed. -->
|
||||
<Version></Version>
|
||||
</LatestPackageReference>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<!-- These dependencies must use version variables because they may be overriden by ProdCon builds. -->
|
||||
<ItemGroup Label="ProdCon dependencies">
|
||||
<!-- These dependencies must use version variables because they may be overriden by ProdCon builds. -->
|
||||
<LatestPackageReference Include="Microsoft.AspNetCore.BenchmarkRunner.Sources" Version="$(MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.AspNetCore.Certificates.Generation.Sources" Version="$(MicrosoftAspNetCoreCertificatesGenerationSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.AspNetCore.Testing" Version="$(MicrosoftAspNetCoreTestingPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.CSharp" Version="$(MicrosoftCSharpPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="$(MicrosoftEntityFrameworkCoreInMemoryPackageVersion)" />
|
||||
|
|
@ -19,14 +32,12 @@
|
|||
<LatestPackageReference Include="Microsoft.Extensions.Caching.Memory" Version="$(MicrosoftExtensionsCachingMemoryPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Caching.Redis" Version="$(MicrosoftExtensionsCachingRedisPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="$(MicrosoftExtensionsCachingSqlServerPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" Version="$(MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.CommandLineUtils.Sources" Version="$(MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="$(MicrosoftExtensionsConfigurationCommandLinePackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="$(MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Configuration.Json" Version="$(MicrosoftExtensionsConfigurationJsonPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftExtensionsConfigurationUserSecretsPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Configuration" Version="$(MicrosoftExtensionsConfigurationPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.CopyOnWriteDictionary.Sources" Version="$(MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.DependencyInjection" Version="$(MicrosoftExtensionsDependencyInjectionPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.DiagnosticAdapter" Version="$(MicrosoftExtensionsDiagnosticAdapterPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(MicrosoftExtensionsFileProvidersEmbeddedPackageVersion)" />
|
||||
|
|
@ -41,12 +52,7 @@
|
|||
<LatestPackageReference Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsLoggingPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsOptionsPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.Process.Sources" Version="$(MicrosoftExtensionsProcessSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.PropertyHelper.Sources" Version="$(MicrosoftExtensionsPropertyHelperSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.RazorViews.Sources" Version="$(MicrosoftExtensionsRazorViewsSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.StackTrace.Sources" Version="$(MicrosoftExtensionsStackTraceSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.TypeNameHelper.Sources" Version="$(MicrosoftExtensionsTypeNameHelperSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.WebEncoders.Sources" Version="$(MicrosoftExtensionsWebEncodersSourcesPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Extensions.WebEncoders" Version="$(MicrosoftExtensionsWebEncodersPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.Internal.AspNetCore.H2Spec.All" Version="$(MicrosoftInternalAspNetCoreH2SpecAllPackageVersion)" />
|
||||
<LatestPackageReference Include="Microsoft.NETCore.Windows.ApiSets" Version="$(MicrosoftNETCoreWindowsApiSetsPackageVersion)" />
|
||||
|
|
@ -60,6 +66,7 @@
|
|||
<LatestPackageReference Include="System.Net.Http.WinHttpHandler" Version="$(SystemNetHttpWinHttpHandlerPackageVersion)" />
|
||||
<LatestPackageReference Include="System.Net.WebSockets.WebSocketProtocol" Version="$(SystemNetWebSocketsWebSocketProtocolPackageVersion)" />
|
||||
<LatestPackageReference Include="System.Numerics.Vectors" Version="$(SystemNumericsVectorsPackageVersion)" />
|
||||
<LatestPackageReference Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataPackageVersion)" />
|
||||
<LatestPackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="$(SystemRuntimeCompilerServicesUnsafePackageVersion)" />
|
||||
<LatestPackageReference Include="System.Security.Cryptography.Cng" Version="$(SystemSecurityCryptographyCngPackageVersion)" />
|
||||
<LatestPackageReference Include="System.Security.Principal.Windows" Version="$(SystemSecurityPrincipalWindowsPackageVersion)" />
|
||||
|
|
@ -69,6 +76,7 @@
|
|||
|
||||
<ItemGroup Label="External dependencies">
|
||||
<LatestPackageReference Include="BenchmarkDotNet" Version="0.10.13" />
|
||||
<LatestPackageReference Include="FSharp.Core" Version="4.2.1" />
|
||||
<LatestPackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
|
||||
<LatestPackageReference Include="Moq" Version="4.10.0" />
|
||||
<!-- This version is required by MSBuild tasks or Visual Studio extensions. -->
|
||||
|
|
@ -89,13 +97,4 @@
|
|||
<LatestPackageReference Include="xunit" Version="2.4.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition=" '$(AddImplicitReferences)' != 'false' AND '$(IsTestProject)' == 'true' AND '$(MSBuildProjectExtension)' == '.csproj' ">
|
||||
<Reference Include="Microsoft.AspNetCore.Testing" />
|
||||
<Reference Include="Microsoft.NET.Test.Sdk" />
|
||||
<Reference Include="Moq" />
|
||||
<Reference Include="xunit" />
|
||||
<Reference Include="xunit.analyzers" />
|
||||
<Reference Include="xunit.runner.visualstudio" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
<!--
|
||||
|
||||
This file contains a list of the package IDs which are patching in a given release.
|
||||
|
||||
CAUTION: due to limitations in MSBuild, the format of the PackagesInPatch property is picky.
|
||||
When adding a new package, make sure the new line ends with a semicolon and starts with a space.
|
||||
Later on, this will be checked using this condition:
|
||||
|
||||
<IsPackageInThisPatch>$(PackagesInPatch.Contains(' $(PackageId);'))</IsPackageInThisPatch>
|
||||
-->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<!-- This file is automatically generated. Run `build.cmd /t:GenerateProjectList` to update. -->
|
||||
<!--
|
||||
This file is automatically generated. Run `build.cmd /t:GenerateProjectList` to update.
|
||||
|
||||
This file contains a map of assembly names to the projects that build them.
|
||||
-->
|
||||
<Project>
|
||||
<ItemGroup>
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Antiforgery" ProjectPath="$(RepositoryRoot)src\Antiforgery\src\Microsoft.AspNetCore.Antiforgery.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore" ProjectPath="$(RepositoryRoot)src\DefaultBuilder\src\Microsoft.AspNetCore.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.JsonPatch" ProjectPath="$(RepositoryRoot)src\Features\JsonPatch\src\Microsoft.AspNetCore.JsonPatch.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.DataProtection.Abstractions" ProjectPath="$(RepositoryRoot)src\DataProtection\Abstractions\src\Microsoft.AspNetCore.DataProtection.Abstractions.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.DataProtection.AzureKeyVault" ProjectPath="$(RepositoryRoot)src\DataProtection\AzureKeyVault\src\Microsoft.AspNetCore.DataProtection.AzureKeyVault.csproj" />
|
||||
|
|
@ -13,6 +17,7 @@
|
|||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.DataProtection.Extensions" ProjectPath="$(RepositoryRoot)src\DataProtection\Extensions\src\Microsoft.AspNetCore.DataProtection.Extensions.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" ProjectPath="$(RepositoryRoot)src\DataProtection\StackExchangeRedis\src\Microsoft.AspNetCore.DataProtection.StackExchangeRedis.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.DataProtection.SystemWeb" ProjectPath="$(RepositoryRoot)src\DataProtection\SystemWeb\src\Microsoft.AspNetCore.DataProtection.SystemWeb.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Antiforgery" ProjectPath="$(RepositoryRoot)src\Antiforgery\src\Microsoft.AspNetCore.Antiforgery.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Hosting.Abstractions" ProjectPath="$(RepositoryRoot)src\Hosting\Abstractions\src\Microsoft.AspNetCore.Hosting.Abstractions.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Hosting" ProjectPath="$(RepositoryRoot)src\Hosting\Hosting\src\Microsoft.AspNetCore.Hosting.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" ProjectPath="$(RepositoryRoot)src\Hosting\Server.Abstractions\src\Microsoft.AspNetCore.Hosting.Server.Abstractions.csproj" />
|
||||
|
|
@ -44,12 +49,12 @@
|
|||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" ProjectPath="$(RepositoryRoot)src\Servers\Kestrel\Transport.Abstractions\src\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" ProjectPath="$(RepositoryRoot)src\Servers\Kestrel\Transport.Libuv\src\Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" ProjectPath="$(RepositoryRoot)src\Servers\Kestrel\Transport.Sockets\src\Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Session" ProjectPath="$(RepositoryRoot)src\Middleware\Session\src\Microsoft.AspNetCore.Session.csproj" />
|
||||
<ProjectReferenceProvider Include="dotnet-dev-certs" ProjectPath="$(RepositoryRoot)src\Tools\dotnet-dev-certs\src\dotnet-dev-certs.csproj" />
|
||||
<ProjectReferenceProvider Include="dotnet-sql-cache" ProjectPath="$(RepositoryRoot)src\Tools\dotnet-sql-cache\src\dotnet-sql-cache.csproj" />
|
||||
<ProjectReferenceProvider Include="dotnet-user-secrets" ProjectPath="$(RepositoryRoot)src\Tools\dotnet-user-secrets\src\dotnet-user-secrets.csproj" />
|
||||
<ProjectReferenceProvider Include="dotnet-watch" ProjectPath="$(RepositoryRoot)src\Tools\dotnet-watch\src\dotnet-watch.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.DeveloperCertificates.XPlat" ProjectPath="$(RepositoryRoot)src\Tools\FirstRunCertGenerator\src\Microsoft.AspNetCore.DeveloperCertificates.XPlat.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Cors" ProjectPath="$(RepositoryRoot)src\Middleware\CORS\src\Microsoft.AspNetCore.Cors.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Diagnostics.Abstractions" ProjectPath="$(RepositoryRoot)src\Middleware\Diagnostics.Abstractions\src\Microsoft.AspNetCore.Diagnostics.Abstractions.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" ProjectPath="$(RepositoryRoot)src\Middleware\Diagnostics.EntityFrameworkCore\src\Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Diagnostics" ProjectPath="$(RepositoryRoot)src\Middleware\Diagnostics\src\Microsoft.AspNetCore.Diagnostics.csproj" />
|
||||
|
|
@ -61,12 +66,12 @@
|
|||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Localization.Routing" ProjectPath="$(RepositoryRoot)src\Middleware\Localization.Routing\src\Microsoft.AspNetCore.Localization.Routing.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Localization" ProjectPath="$(RepositoryRoot)src\Middleware\Localization\src\Microsoft.AspNetCore.Localization.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.MiddlewareAnalysis" ProjectPath="$(RepositoryRoot)src\Middleware\MiddlewareAnalysis\src\Microsoft.AspNetCore.MiddlewareAnalysis.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" ProjectPath="$(RepositoryRoot)src\Middleware\ResponseCaching.Abstractions\src\Microsoft.AspNetCore.ResponseCaching.Abstractions.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.ResponseCaching" ProjectPath="$(RepositoryRoot)src\Middleware\ResponseCaching\src\Microsoft.AspNetCore.ResponseCaching.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.ResponseCompression" ProjectPath="$(RepositoryRoot)src\Middleware\ResponseCompression\src\Microsoft.AspNetCore.ResponseCompression.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Rewrite" ProjectPath="$(RepositoryRoot)src\Middleware\Rewrite\src\Microsoft.AspNetCore.Rewrite.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.WebSockets" ProjectPath="$(RepositoryRoot)src\Middleware\WebSockets\src\Microsoft.AspNetCore.WebSockets.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Cors" ProjectPath="$(RepositoryRoot)src\Middleware\CORS\src\Microsoft.AspNetCore.Cors.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.ResponseCaching" ProjectPath="$(RepositoryRoot)src\Middleware\ResponseCaching\src\Microsoft.AspNetCore.ResponseCaching.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" ProjectPath="$(RepositoryRoot)src\Middleware\ResponseCaching.Abstractions\src\Microsoft.AspNetCore.ResponseCaching.Abstractions.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.Session" ProjectPath="$(RepositoryRoot)src\Middleware\Session\src\Microsoft.AspNetCore.Session.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.StaticFiles" ProjectPath="$(RepositoryRoot)src\Middleware\StaticFiles\src\Microsoft.AspNetCore.StaticFiles.csproj" />
|
||||
<ProjectReferenceProvider Include="Microsoft.AspNetCore.WebSockets" ProjectPath="$(RepositoryRoot)src\Middleware\WebSockets\src\Microsoft.AspNetCore.WebSockets.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
<!--
|
||||
|
||||
This file defines the versions of external dependencies used by ASP.NET Core.
|
||||
This file might be updated by automation.
|
||||
|
||||
TODO: move versions from build/dependencies.props into this location. Depends on https://github.com/aspnet/AspNetCore/issues/4246.
|
||||
-->
|
||||
<Project />
|
||||
|
|
@ -15,4 +15,13 @@
|
|||
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="$(MicrosoftNETFrameworkReferenceAssembliesPackageVersion)" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition=" '$(AddImplicitReferences)' != 'false' AND '$(IsTestProject)' == 'true' ">
|
||||
<Reference Include="Microsoft.AspNetCore.Testing" />
|
||||
<Reference Include="Microsoft.NET.Test.Sdk" />
|
||||
<Reference Include="Moq" />
|
||||
<Reference Include="xunit" />
|
||||
<Reference Include="xunit.analyzers" />
|
||||
<Reference Include="xunit.runner.visualstudio" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,21 @@
|
|||
<!--
|
||||
|
||||
The targets in this file are used to implement custom <Reference> resolution.
|
||||
For more details, see /docs/ReferenceResolution.md.
|
||||
|
||||
Properties which can be set by projects. If unset, these will be inferred.
|
||||
|
||||
* UseLatestPackageReferences = resolve `<Reference>` items to the latest version of PackageReferences in eng/Dependencies.props.
|
||||
* UseProjectReferences = prefer project references to packages
|
||||
* IsProjectReferenceProvider = when true, the assembly in this project should be available as a ProjectReferenceProvider (see below).
|
||||
|
||||
Items used by the resolution strategy:
|
||||
|
||||
* BaselinePackageReference = a list of packages that were reference in the last release of the project currently building
|
||||
* LatestPackageReference = a list of the latest versions of packages
|
||||
* Reference = a list of the references which are needed for compilation or runtime
|
||||
* ProjectReferenceProvider = a list which maps of assembly names to the project file that produces it
|
||||
-->
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
|
|
@ -31,17 +49,23 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Packages which are implicitly defined by the .NET Core SDK. -->
|
||||
<_ImplicitPackageReference Include="@(PackageReference->WithMetadataValue('IsImplicitlyDefined', 'true'))" />
|
||||
<!-- Capture a list of references which were set explicitly in the project. -->
|
||||
<_ExplicitPackageReference Include="@(PackageReference)" Exclude="@(_ImplicitPackageReference)" />
|
||||
<!-- Special case: ignore the reference to Internal.AspNetCore.Sdk, which is defined in eng/targets/Cpp.Common.props. -->
|
||||
<_ExplicitPackageReference Remove="Internal.AspNetCore.Sdk" />
|
||||
<_ExplicitPackageReference Remove="Microsoft.NETFramework.ReferenceAssemblies" />
|
||||
|
||||
<UnusedProjectReferenceProvider Include="@(ProjectReferenceProvider)" Exclude="@(Reference)" />
|
||||
<_UnusedProjectReferenceProvider Include="@(ProjectReferenceProvider)" Exclude="@(Reference)" />
|
||||
|
||||
<!-- Order matters. Projects should be used when possible instead of packages. -->
|
||||
<!--
|
||||
Turn Reference items into a ProjectReference when UseProjectReferences is true.
|
||||
Order matters. This comes before package resolution because projects should be used when possible instead of packages.
|
||||
-->
|
||||
<_ProjectReferenceByAssemblyName Condition="'$(UseProjectReferences)' == 'true'"
|
||||
Include="@(ProjectReferenceProvider)"
|
||||
Exclude="@(UnusedProjectReferenceProvider)" />
|
||||
Exclude="@(_UnusedProjectReferenceProvider)" />
|
||||
|
||||
<ProjectReference Include="@(_ProjectReferenceByAssemblyName->'%(ProjectPath)')" />
|
||||
|
||||
|
|
@ -52,12 +76,18 @@
|
|||
<Reference Remove="@(Reference)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!--
|
||||
This target resolves remaining Referene items to Packages, if possible. If not, they are left as Reference items fo the SDK to resolve.
|
||||
This executes on NuGet restore and during DesignTimeBuild. It should not run in the outer, cross-targeting build.
|
||||
-->
|
||||
<Target Name="ResolveCustomReferences" BeforeTargets="CollectPackageReferences;ResolveAssemblyReferencesDesignTime;ResolveAssemblyReferences" Condition=" '$(TargetFramework)' != '' ">
|
||||
<ItemGroup>
|
||||
<Reference Include="@(_ReferenceTemp)" />
|
||||
<_ReferenceTemp Remove="@(_ReferenceTemp)" />
|
||||
|
||||
<!-- Identify if any references were present in the last release of this package, but have been removed. -->
|
||||
<UnusedBaselinePackageReference Include="@(BaselinePackageReference)" Exclude="@(Reference);@(_ProjectReferenceByAssemblyName)" />
|
||||
|
||||
<!--
|
||||
MSBuild does not provide a way to join on matching identities in a Condition,
|
||||
but you can do a cartesian product of two item groups and filter out mismatched id's in a second pass.
|
||||
|
|
@ -102,7 +132,8 @@
|
|||
<_PrivatePackageReferenceWithVersion Remove="@(_PrivatePackageReferenceWithVersion)" />
|
||||
<_ImplicitPackageReference Remove="@(_ImplicitPackageReference)" />
|
||||
</ItemGroup>
|
||||
<!--
|
||||
|
||||
<!-- TODO: when we finish https://github.com/aspnet/AspNetCore/issues/4246, introduce errors to force projects to use custom resolution.
|
||||
<Error Condition="@(_ExplicitPackageReference->Count()) != 0"
|
||||
Text="PackageReference items are not allowed. Use <Reference> instead. " /> -->
|
||||
|
||||
|
|
@ -118,6 +149,7 @@
|
|||
Text="Could not resolve this reference. Could not locate the package or project for "%(Reference.Identity)"" />
|
||||
</Target>
|
||||
|
||||
<!-- These targets are used to generate the map of assembly name to project files. See also the /t:GenerateProjectList target in build/repo.targets. -->
|
||||
<Target Name="GetReferencesProvided" Returns="@(ProvidesReference)">
|
||||
<ItemGroup>
|
||||
<_TargetFramework Remove="@(_TargetFramework)" />
|
||||
|
|
|
|||
|
|
@ -54,8 +54,6 @@
|
|||
<MicrosoftExtensionsLoggingTestingPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsRazorViewsSourcesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsRazorViewsSourcesPackageVersion>
|
||||
<MicrosoftExtensionsSecurityHelperSourcesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsSecurityHelperSourcesPackageVersion>
|
||||
<MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>3.14.2</MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>
|
||||
<MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>5.2.0</MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>
|
||||
<MicrosoftNETCoreApp20PackageVersion>2.0.9</MicrosoftNETCoreApp20PackageVersion>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)..\..\eng\AspNetCore.snk</AssemblyOriginatorKeyFile>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<SharedSourceRoot>$(MSBuildThisFileDirectory)..\Shared\</SharedSourceRoot>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,51 +1,50 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Package Versions">
|
||||
<InternalAspNetCoreSdkPackageVersion>2.2.0-preview2-20181004.6</InternalAspNetCoreSdkPackageVersion>
|
||||
<InternalAspNetCoreSiteExtensionSdkPackageVersion>2.2.0-preview2-20181004.6</InternalAspNetCoreSiteExtensionSdkPackageVersion>
|
||||
<MicrosoftApplicationInsightsAspNetCorePackageVersion>2.1.1</MicrosoftApplicationInsightsAspNetCorePackageVersion>
|
||||
<MicrosoftAspNetCoreAspNetCoreModulePackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreAspNetCoreModulePackageVersion>
|
||||
<MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>
|
||||
<MicrosoftAspNetCoreAzureAppServicesHostingStartupPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreAzureAppServicesHostingStartupPackageVersion>
|
||||
<MicrosoftAspNetCoreAzureKeyVaultHostingStartupPackageVersion>2.1.0-preview2-30187</MicrosoftAspNetCoreAzureKeyVaultHostingStartupPackageVersion>
|
||||
<MicrosoftAspNetCoreDataProtectionAzureKeyVaultPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreDataProtectionAzureKeyVaultPackageVersion>
|
||||
<MicrosoftAspNetCoreHostingAbstractionsPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreHostingAbstractionsPackageVersion>
|
||||
<MicrosoftAspNetCoreHostingPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreHostingPackageVersion>
|
||||
<MicrosoftAspNetCoreMvcPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreMvcPackageVersion>
|
||||
<MicrosoftAspNetCoreRazorRuntimePackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreRazorRuntimePackageVersion>
|
||||
<MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
|
||||
<MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>0.6.0-preview3-35425</MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>
|
||||
<MicrosoftAspNetCoreServerKestrelPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreServerKestrelPackageVersion>
|
||||
<MicrosoftAspNetCoreTestHostPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreTestHostPackageVersion>
|
||||
<MicrosoftAzureManagementFluentPackageVersion>1.1.3</MicrosoftAzureManagementFluentPackageVersion>
|
||||
<MicrosoftAzureServicesAppAuthenticationPackageVersion>1.0.1</MicrosoftAzureServicesAppAuthenticationPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsolePackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTestingPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftExtensionsProcessSourcesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsProcessSourcesPackageVersion>
|
||||
<MicrosoftNETCoreApp20PackageVersion>2.0.9</MicrosoftNETCoreApp20PackageVersion>
|
||||
<MicrosoftNETCoreApp21PackageVersion>2.1.3</MicrosoftNETCoreApp21PackageVersion>
|
||||
<MicrosoftNETCoreApp22PackageVersion>2.2.0-preview3-27001-02</MicrosoftNETCoreApp22PackageVersion>
|
||||
<MicrosoftNETSdkRazorPackageVersion>2.2.0-preview3-35425</MicrosoftNETSdkRazorPackageVersion>
|
||||
<MicrosoftNETTestSdkPackageVersion>15.6.1</MicrosoftNETTestSdkPackageVersion>
|
||||
<MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion>
|
||||
<MoqPackageVersion>4.7.49</MoqPackageVersion>
|
||||
<NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>
|
||||
<NewtonsoftJsonPackageVersion>11.0.2</NewtonsoftJsonPackageVersion>
|
||||
<SystemReflectionMetadataPackageVersion>1.6.0</SystemReflectionMetadataPackageVersion>
|
||||
<WindowsAzureStoragePackageVersion>8.1.4</WindowsAzureStoragePackageVersion>
|
||||
<XunitPackageVersion>2.3.1</XunitPackageVersion>
|
||||
<XunitRunnerVisualStudioPackageVersion>2.4.0</XunitRunnerVisualStudioPackageVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(DotNetPackageVersionPropsPath)" Condition=" '$(DotNetPackageVersionPropsPath)' != '' " />
|
||||
<PropertyGroup Label="Package Versions: Pinned" />
|
||||
</Project>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Package Versions">
|
||||
<InternalAspNetCoreSdkPackageVersion>2.2.0-preview2-20181004.6</InternalAspNetCoreSdkPackageVersion>
|
||||
<InternalAspNetCoreSiteExtensionSdkPackageVersion>2.2.0-preview2-20181004.6</InternalAspNetCoreSiteExtensionSdkPackageVersion>
|
||||
<MicrosoftApplicationInsightsAspNetCorePackageVersion>2.1.1</MicrosoftApplicationInsightsAspNetCorePackageVersion>
|
||||
<MicrosoftAspNetCoreAspNetCoreModulePackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreAspNetCoreModulePackageVersion>
|
||||
<MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>
|
||||
<MicrosoftAspNetCoreAzureAppServicesHostingStartupPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreAzureAppServicesHostingStartupPackageVersion>
|
||||
<MicrosoftAspNetCoreAzureKeyVaultHostingStartupPackageVersion>2.1.0-preview2-30187</MicrosoftAspNetCoreAzureKeyVaultHostingStartupPackageVersion>
|
||||
<MicrosoftAspNetCoreDataProtectionAzureKeyVaultPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreDataProtectionAzureKeyVaultPackageVersion>
|
||||
<MicrosoftAspNetCoreHostingAbstractionsPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreHostingAbstractionsPackageVersion>
|
||||
<MicrosoftAspNetCoreHostingPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreHostingPackageVersion>
|
||||
<MicrosoftAspNetCoreMvcPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreMvcPackageVersion>
|
||||
<MicrosoftAspNetCoreRazorRuntimePackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreRazorRuntimePackageVersion>
|
||||
<MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
|
||||
<MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>0.6.0-preview3-35425</MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>
|
||||
<MicrosoftAspNetCoreServerKestrelPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreServerKestrelPackageVersion>
|
||||
<MicrosoftAspNetCoreTestHostPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreTestHostPackageVersion>
|
||||
<MicrosoftAzureManagementFluentPackageVersion>1.1.3</MicrosoftAzureManagementFluentPackageVersion>
|
||||
<MicrosoftAzureServicesAppAuthenticationPackageVersion>1.0.1</MicrosoftAzureServicesAppAuthenticationPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsolePackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTestingPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftNETCoreApp20PackageVersion>2.0.9</MicrosoftNETCoreApp20PackageVersion>
|
||||
<MicrosoftNETCoreApp21PackageVersion>2.1.3</MicrosoftNETCoreApp21PackageVersion>
|
||||
<MicrosoftNETCoreApp22PackageVersion>2.2.0-preview3-27001-02</MicrosoftNETCoreApp22PackageVersion>
|
||||
<MicrosoftNETSdkRazorPackageVersion>2.2.0-preview3-35425</MicrosoftNETSdkRazorPackageVersion>
|
||||
<MicrosoftNETTestSdkPackageVersion>15.6.1</MicrosoftNETTestSdkPackageVersion>
|
||||
<MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion>
|
||||
<MoqPackageVersion>4.7.49</MoqPackageVersion>
|
||||
<NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>
|
||||
<NewtonsoftJsonPackageVersion>11.0.2</NewtonsoftJsonPackageVersion>
|
||||
<SystemReflectionMetadataPackageVersion>1.6.0</SystemReflectionMetadataPackageVersion>
|
||||
<WindowsAzureStoragePackageVersion>8.1.4</WindowsAzureStoragePackageVersion>
|
||||
<XunitPackageVersion>2.3.1</XunitPackageVersion>
|
||||
<XunitRunnerVisualStudioPackageVersion>2.4.0</XunitRunnerVisualStudioPackageVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(DotNetPackageVersionPropsPath)" Condition=" '$(DotNetPackageVersionPropsPath)' != '' " />
|
||||
<PropertyGroup Label="Package Versions: Pinned" />
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -9,13 +9,13 @@
|
|||
<None Include="Assets\*.*" CopyToOutputDirectory="PreserveNewest" />
|
||||
<Compile Remove="Assets\**\*.*" />
|
||||
<Compile Include="Assets\RuntimeInformationMiddleware.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)Process\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="$(MicrosoftAspNetCoreHostingAbstractionsPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="$(MicrosoftExtensionsLoggingConsolePackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Testing" Version="$(MicrosoftExtensionsLoggingTestingPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.Process.Sources" Version="$(MicrosoftExtensionsProcessSourcesPackageVersion)" />
|
||||
|
||||
<PackageReference Include="Microsoft.Azure.Management.Fluent" Version="$(MicrosoftAzureManagementFluentPackageVersion)" />
|
||||
<PackageReference Include="WindowsAzure.Storage" Version="$(WindowsAzureStoragePackageVersion)" />
|
||||
|
|
|
|||
|
|
@ -12,10 +12,7 @@ Microsoft.AspNetCore.DataProtection.IDataProtector</Description>
|
|||
|
||||
<ItemGroup>
|
||||
<Compile Include="..\..\shared\src\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Extensions.WebEncoders.Sources" PrivateAssets="All" />
|
||||
<Compile Include="$(SharedSourceRoot)WebEncoders\**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,205 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.26124.0
|
||||
MinimumVisualStudioVersion = 15.0.26124.0
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp", "samples\SampleApp\SampleApp.csproj", "{C19108F8-667B-4CF9-B227-CDD2290224BC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Tests", "test\Microsoft.AspNetCore.Tests\Microsoft.AspNetCore.Tests.csproj", "{1CD49F15-D381-4C7E-8E12-A85E7753B110}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.FunctionalTests", "test\Microsoft.AspNetCore.FunctionalTests\Microsoft.AspNetCore.FunctionalTests.csproj", "{766C394B-ABBB-4624-A071-C806C0A2CD3E}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "testassets", "testassets", "{3C38AE63-E4F4-4BCA-97C1-F0A96A06BA88}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CreateDefaultBuilderApp", "testassets\CreateDefaultBuilderApp\CreateDefaultBuilderApp.csproj", "{BE8D7353-692B-4B5B-ADFD-32632AE758E3}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CreateDefaultBuilderOfTApp", "testassets\CreateDefaultBuilderOfTApp\CreateDefaultBuilderOfTApp.csproj", "{AE1F0124-996E-476A-9331-FB789F3D0577}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DependencyInjectionApp", "testassets\DependencyInjectionApp\DependencyInjectionApp.csproj", "{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StartRequestDelegateUrlApp", "testassets\StartRequestDelegateUrlApp\StartRequestDelegateUrlApp.csproj", "{4B69520E-CB30-4B20-BCA7-9378EAC322A6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StartRouteBuilderUrlApp", "testassets\StartRouteBuilderUrlApp\StartRouteBuilderUrlApp.csproj", "{AC847245-BFC3-4BEB-915C-FCD932359A5F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StartWithIApplicationBuilderUrlApp", "testassets\StartWithIApplicationBuilderUrlApp\StartWithIApplicationBuilderUrlApp.csproj", "{92F27C24-44CA-4C2B-867E-1A4D776B03E0}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore", "src\Microsoft.AspNetCore.csproj", "{BEB88AF7-67EB-4754-A5CD-89C0388974C9}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_dependencies", "_dependencies", "{31D4AC03-410F-476C-A0C8-E9E9490289B1}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IntegrationTesting", "..\Hosting\Server.IntegrationTesting\src\Microsoft.AspNetCore.Server.IntegrationTesting.csproj", "{BF5885C7-F975-4652-9C11-093781FC16C5}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.StaticFiles", "..\Middleware\StaticFiles\src\Microsoft.AspNetCore.StaticFiles.csproj", "{D46E4E5D-0846-4574-A8BA-30D040A6254D}"
|
||||
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
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Release|x64.Build.0 = Release|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C19108F8-667B-4CF9-B227-CDD2290224BC}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Release|x64.Build.0 = Release|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1CD49F15-D381-4C7E-8E12-A85E7753B110}.Release|x86.Build.0 = Release|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{766C394B-ABBB-4624-A071-C806C0A2CD3E}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Release|x64.Build.0 = Release|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3}.Release|x86.Build.0 = Release|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Release|x64.Build.0 = Release|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577}.Release|x86.Build.0 = Release|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Release|x64.Build.0 = Release|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Release|x64.Build.0 = Release|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Release|x64.Build.0 = Release|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F}.Release|x86.Build.0 = Release|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Release|x64.Build.0 = Release|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Release|x64.Build.0 = Release|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BEB88AF7-67EB-4754-A5CD-89C0388974C9}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Release|x64.Build.0 = Release|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5}.Release|x86.Build.0 = Release|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Release|x64.Build.0 = Release|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{BE8D7353-692B-4B5B-ADFD-32632AE758E3} = {3C38AE63-E4F4-4BCA-97C1-F0A96A06BA88}
|
||||
{AE1F0124-996E-476A-9331-FB789F3D0577} = {3C38AE63-E4F4-4BCA-97C1-F0A96A06BA88}
|
||||
{03C1BD3F-6F6D-4D8F-9BD9-205D059723B6} = {3C38AE63-E4F4-4BCA-97C1-F0A96A06BA88}
|
||||
{4B69520E-CB30-4B20-BCA7-9378EAC322A6} = {3C38AE63-E4F4-4BCA-97C1-F0A96A06BA88}
|
||||
{AC847245-BFC3-4BEB-915C-FCD932359A5F} = {3C38AE63-E4F4-4BCA-97C1-F0A96A06BA88}
|
||||
{92F27C24-44CA-4C2B-867E-1A4D776B03E0} = {3C38AE63-E4F4-4BCA-97C1-F0A96A06BA88}
|
||||
{BF5885C7-F975-4652-9C11-093781FC16C5} = {31D4AC03-410F-476C-A0C8-E9E9490289B1}
|
||||
{D46E4E5D-0846-4574-A8BA-30D040A6254D} = {31D4AC03-410F-476C-A0C8-E9E9490289B1}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {3A0191FF-7538-4406-BD4A-4883C0E1B72C}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netcoreapp2.2;net461</TargetFrameworks>
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(MicrosoftAspNetCoreStaticFilesPackageVersion)" />
|
||||
<ProjectReference Include="..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore.StaticFiles" />
|
||||
<Reference Include="Microsoft.AspNetCore" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0</TargetFrameworks>
|
||||
<PackageTags>aspnetcore</PackageTags>
|
||||
<Description>Microsoft.AspNetCore</Description>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<EnableApiCheck>false</EnableApiCheck>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore.Diagnostics" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.AspNetCore.HostFiltering" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.AspNetCore.Hosting" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.AspNetCore.Routing" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.IIS" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.IISIntegration" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.Kestrel.Https" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Configuration.FileExtensions" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Configuration.Json" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Configuration.CommandLine" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Configuration.UserSecrets" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Logging" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Logging.Configuration" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Logging.Console" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Logging.Debug" PrivateAssets="None" />
|
||||
<Reference Include="Microsoft.Extensions.Logging.EventSource" PrivateAssets="None" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>$(StandardTestTfms)</TargetFrameworks>
|
||||
|
||||
<!--
|
||||
Workaround for "Use executable flags in Microsoft.NET.Test.Sdk" (https://github.com/Microsoft/vstest/issues/792).
|
||||
Remove when fixed.
|
||||
-->
|
||||
<HasRuntimeOutput>true</HasRuntimeOutput>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="testCert.pfx" CopyToOutputDirectory="PreserveNewest" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.IntegrationTesting" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.IntegrationTesting.IIS" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -240,10 +240,10 @@ namespace Microsoft.AspNetCore.Tests
|
|||
var directoryInfo = new DirectoryInfo(applicationBasePath);
|
||||
do
|
||||
{
|
||||
var solutionFileInfo = new FileInfo(Path.Combine(directoryInfo.FullName, "MetaPackages.sln"));
|
||||
var solutionFileInfo = new FileInfo(Path.Combine(directoryInfo.FullName, "DefaultBuilder.sln"));
|
||||
if (solutionFileInfo.Exists)
|
||||
{
|
||||
return Path.GetFullPath(Path.Combine(directoryInfo.FullName, "test", "TestSites"));
|
||||
return Path.GetFullPath(Path.Combine(directoryInfo.FullName, "testassets"));
|
||||
}
|
||||
|
||||
directoryInfo = directoryInfo.Parent;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>$(StandardTestTfms)</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -8,10 +8,13 @@
|
|||
<PackageTags>aspnetcore;json;jsonpatch</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)ClosedGenericMatcher\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Newtonsoft.Json" />
|
||||
<Reference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,11 @@
|
|||
<PackageTags>aspnetcore;hosting</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)RazorViews\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)StackTrace\**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore.Hosting.Abstractions" />
|
||||
<Reference Include="Microsoft.AspNetCore.Http.Extensions" />
|
||||
|
|
@ -20,8 +25,6 @@
|
|||
<Reference Include="Microsoft.Extensions.Hosting.Abstractions" />
|
||||
<Reference Include="Microsoft.Extensions.Logging" />
|
||||
<Reference Include="Microsoft.Extensions.Options" />
|
||||
<Reference Include="Microsoft.Extensions.RazorViews.Sources" PrivateAssets="All" />
|
||||
<Reference Include="Microsoft.Extensions.StackTrace.Sources" PrivateAssets="All" />
|
||||
<Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" PrivateAssets="All" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource" />
|
||||
<Reference Include="System.Reflection.Metadata" />
|
||||
|
|
|
|||
|
|
@ -17,10 +17,8 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)Process\*.cs" />
|
||||
<EmbeddedResource Include="Http.config" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Deployers\RemoteWindowsDeployer\RemotePSSessionHelper.ps1;Deployers\RemoteWindowsDeployer\StartServer.ps1;Deployers\RemoteWindowsDeployer\StopServer.ps1" Exclude="bin\**;obj\**;**\*.xproj;packages\**;@(EmbeddedResource)" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
@ -31,7 +29,6 @@
|
|||
<Reference Include="Microsoft.Extensions.Logging" />
|
||||
<Reference Include="Microsoft.Extensions.Logging.Console" />
|
||||
<Reference Include="Microsoft.Extensions.Logging.Testing" />
|
||||
<Reference Include="Microsoft.Extensions.Process.Sources" PrivateAssets="All" />
|
||||
<Reference Include="Microsoft.NETCore.Windows.ApiSets" />
|
||||
<Reference Include="Serilog.Extensions.Logging" />
|
||||
<Reference Include="Serilog.Sinks.File" />
|
||||
|
|
|
|||
|
|
@ -9,10 +9,13 @@
|
|||
<PackageTags>aspnetcore</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)CopyOnWriteDictionary\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore.Http.Abstractions" />
|
||||
<Reference Include="Microsoft.AspNetCore.WebUtilities" />
|
||||
<Reference Include="Microsoft.Extensions.CopyOnWriteDictionary.Sources" PrivateAssets="All" />
|
||||
<Reference Include="Microsoft.Extensions.ObjectPool" />
|
||||
<Reference Include="Microsoft.Extensions.Options" />
|
||||
<Reference Include="Microsoft.Net.Http.Headers" />
|
||||
|
|
|
|||
|
|
@ -11,8 +11,11 @@ Microsoft.AspNetCore.Routing.RouteData</Description>
|
|||
<PackageTags>aspnetcore;routing</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)PropertyHelper\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore.Http.Abstractions" />
|
||||
<Reference Include="Microsoft.Extensions.PropertyHelper.Sources" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -24,6 +24,10 @@ Microsoft.AspNetCore.Routing.RouteCollection</Description>
|
|||
<DefineConstants Condition="'$(ILEmitSaveAssemblies)'=='true'">IL_EMIT_SAVE_ASSEMBLIES;$(DefineConstants)</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)PropertyHelper\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore.Http.Extensions" />
|
||||
<Reference Include="Microsoft.AspNetCore.Routing.Abstractions" />
|
||||
|
|
@ -31,7 +35,6 @@ Microsoft.AspNetCore.Routing.RouteCollection</Description>
|
|||
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
||||
<Reference Include="Microsoft.Extensions.ObjectPool" />
|
||||
<Reference Include="Microsoft.Extensions.Options" />
|
||||
<Reference Include="Microsoft.Extensions.PropertyHelper.Sources" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,10 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Extensions.WebEncoders.Sources" PrivateAssets="All" />
|
||||
<Compile Include="$(SharedSourceRoot)WebEncoders\**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Net.Http.Headers" />
|
||||
<Reference Include="System.Text.Encodings.Web" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<!-- Workaround microsoft/msbuild#3626 -->
|
||||
<AddSyntheticProjectReferencesForSolutionDependencies>false</AddSyntheticProjectReferencesForSolutionDependencies>
|
||||
<SharedSourceRoot>$(MSBuildThisFileDirectory)..\Shared\</SharedSourceRoot>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -58,8 +58,6 @@
|
|||
<MicrosoftExtensionsLoggingTestingPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsRazorViewsSourcesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsRazorViewsSourcesPackageVersion>
|
||||
<MicrosoftExtensionsSecurityHelperSourcesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsSecurityHelperSourcesPackageVersion>
|
||||
<MicrosoftNETCoreApp20PackageVersion>2.0.9</MicrosoftNETCoreApp20PackageVersion>
|
||||
<MicrosoftNETCoreApp21PackageVersion>2.1.3</MicrosoftNETCoreApp21PackageVersion>
|
||||
<MicrosoftNETCoreApp22PackageVersion>2.2.0-preview3-27001-02</MicrosoftNETCoreApp22PackageVersion>
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
[Oo]bj/
|
||||
[Bb]in/
|
||||
TestResults/
|
||||
.nuget/
|
||||
_ReSharper.*/
|
||||
packages/
|
||||
artifacts/
|
||||
PublishProfiles/
|
||||
*.user
|
||||
*.suo
|
||||
*.cache
|
||||
*.docstates
|
||||
_ReSharper.*
|
||||
nuget.exe
|
||||
*net45.csproj
|
||||
*net451.csproj
|
||||
*k10.csproj
|
||||
*.psess
|
||||
*.vsp
|
||||
*.pidb
|
||||
*.userprefs
|
||||
*DS_Store
|
||||
*.ncrunchsolution
|
||||
*.*sdf
|
||||
*.ipch
|
||||
*.sln.ide
|
||||
project.lock.json
|
||||
.vs
|
||||
.vscode/
|
||||
.build/
|
||||
.testPublish/
|
||||
global.json
|
||||
|
||||
# Dependencies from pre-requisite builds
|
||||
.deps/
|
||||
.rw/
|
||||
.ro/
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<Project>
|
||||
<Import
|
||||
Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), AspNetCoreSettings.props))\AspNetCoreSettings.props"
|
||||
Condition=" '$(CI)' != 'true' AND '$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), AspNetCoreSettings.props))' != '' " />
|
||||
|
||||
<Import Project="version.props" />
|
||||
<Import Project="build\dependencies.props" />
|
||||
<Import Project="build\sources.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<Product>Microsoft ASP.NET Core</Product>
|
||||
<RepositoryUrl>https://github.com/aspnet/AspnetCore</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryRoot>$(MSBuildThisFileDirectory)</RepositoryRoot>
|
||||
<GenerateUserSecretsAttribute>false</GenerateUserSecretsAttribute>
|
||||
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)..\..\eng\AspNetCore.snk</AssemblyOriginatorKeyFile>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp2.0' ">$(MicrosoftNETCoreApp20PackageVersion)</RuntimeFrameworkVersion>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp2.1' ">$(MicrosoftNETCoreApp21PackageVersion)</RuntimeFrameworkVersion>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp2.2' ">$(MicrosoftNETCoreApp22PackageVersion)</RuntimeFrameworkVersion>
|
||||
<NETStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netstandard2.0' ">$(NETStandardLibrary20PackageVersion)</NETStandardImplicitPackageVersion>
|
||||
<!-- aspnet/BuildTools#662 Don't police what version of NetCoreApp we use -->
|
||||
<NETCoreAppMaximumVersion>99.9</NETCoreAppMaximumVersion>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -1,116 +0,0 @@
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27005.2
|
||||
MinimumVisualStudioVersion = 15.0.26730.03
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED834E68-51C3-4ADE-ACC8-6BA6D4207C09}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
src\Directory.Build.props = src\Directory.Build.props
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore", "src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj", "{6F3D43F7-9546-4B41-AF04-CF4708B62051}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{97D53BEB-A511-4FBE-B784-AB407D9A219F}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
Directory.Build.props = Directory.Build.props
|
||||
Directory.Build.targets = Directory.Build.targets
|
||||
NuGet.config = NuGet.config
|
||||
version.xml = version.xml
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{F92CB7A1-C38E-408C-A7EC-A5C040D041E1}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build\dependencies.props = build\dependencies.props
|
||||
build\repo.targets = build\repo.targets
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{192F583C-C4CA-43E5-B31C-D21B7806E274}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp", "samples\SampleApp\SampleApp.csproj", "{AF5BB04E-92F7-4737-8B98-F86F6244FAB2}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{9E49B5B9-9E72-42FB-B684-90CA1B1BCF9C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.FunctionalTests", "test\Microsoft.AspNetCore.FunctionalTests\Microsoft.AspNetCore.FunctionalTests.csproj", "{C72A756A-D29D-44C7-83D4-821DBE82DBCA}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestSites", "TestSites", "{EC22261D-0DE1-47DE-8F7C-072675D6F5B4}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StartRouteBuilderUrlApp", "test\TestSites\StartRouteBuilderUrlApp\StartRouteBuilderUrlApp.csproj", "{AB42054B-1801-4FEE-B5C3-8529C6D7BFDA}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StartWithIApplicationBuilderUrlApp", "test\TestSites\StartWithIApplicationBuilderUrlApp\StartWithIApplicationBuilderUrlApp.csproj", "{3A85FA52-F601-422E-A42E-9F187DB28492}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StartRequestDelegateUrlApp", "test\TestSites\StartRequestDelegateUrlApp\StartRequestDelegateUrlApp.csproj", "{401C741B-6C7C-4E08-9F09-C3D43D22C0DE}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CreateDefaultBuilderApp", "test\TestSites\CreateDefaultBuilderApp\CreateDefaultBuilderApp.csproj", "{79CF58CE-B020-45D8-BDB5-2D8036BEAD14}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DependencyInjectionApp", "test\TestSites\DependencyInjectionApp\DependencyInjectionApp.csproj", "{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CreateDefaultBuilderOfTApp", "test\TestSites\CreateDefaultBuilderOfTApp\CreateDefaultBuilderOfTApp.csproj", "{A922B5AC-836B-44F4-83F1-3CB9EB08A3F8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AspNetCore.Tests", "test\Microsoft.AspNetCore.Tests\Microsoft.AspNetCore.Tests.csproj", "{BD08F027-3BB9-427B-9367-19534B7376B3}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{6F3D43F7-9546-4B41-AF04-CF4708B62051}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6F3D43F7-9546-4B41-AF04-CF4708B62051}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6F3D43F7-9546-4B41-AF04-CF4708B62051}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6F3D43F7-9546-4B41-AF04-CF4708B62051}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AF5BB04E-92F7-4737-8B98-F86F6244FAB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AF5BB04E-92F7-4737-8B98-F86F6244FAB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AF5BB04E-92F7-4737-8B98-F86F6244FAB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AF5BB04E-92F7-4737-8B98-F86F6244FAB2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C72A756A-D29D-44C7-83D4-821DBE82DBCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C72A756A-D29D-44C7-83D4-821DBE82DBCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C72A756A-D29D-44C7-83D4-821DBE82DBCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C72A756A-D29D-44C7-83D4-821DBE82DBCA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AB42054B-1801-4FEE-B5C3-8529C6D7BFDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AB42054B-1801-4FEE-B5C3-8529C6D7BFDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AB42054B-1801-4FEE-B5C3-8529C6D7BFDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AB42054B-1801-4FEE-B5C3-8529C6D7BFDA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3A85FA52-F601-422E-A42E-9F187DB28492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3A85FA52-F601-422E-A42E-9F187DB28492}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3A85FA52-F601-422E-A42E-9F187DB28492}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3A85FA52-F601-422E-A42E-9F187DB28492}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{401C741B-6C7C-4E08-9F09-C3D43D22C0DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{401C741B-6C7C-4E08-9F09-C3D43D22C0DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{401C741B-6C7C-4E08-9F09-C3D43D22C0DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{401C741B-6C7C-4E08-9F09-C3D43D22C0DE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{79CF58CE-B020-45D8-BDB5-2D8036BEAD14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{79CF58CE-B020-45D8-BDB5-2D8036BEAD14}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{79CF58CE-B020-45D8-BDB5-2D8036BEAD14}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{79CF58CE-B020-45D8-BDB5-2D8036BEAD14}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A922B5AC-836B-44F4-83F1-3CB9EB08A3F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A922B5AC-836B-44F4-83F1-3CB9EB08A3F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A922B5AC-836B-44F4-83F1-3CB9EB08A3F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A922B5AC-836B-44F4-83F1-3CB9EB08A3F8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BD08F027-3BB9-427B-9367-19534B7376B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BD08F027-3BB9-427B-9367-19534B7376B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BD08F027-3BB9-427B-9367-19534B7376B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BD08F027-3BB9-427B-9367-19534B7376B3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{6F3D43F7-9546-4B41-AF04-CF4708B62051} = {ED834E68-51C3-4ADE-ACC8-6BA6D4207C09}
|
||||
{AF5BB04E-92F7-4737-8B98-F86F6244FAB2} = {192F583C-C4CA-43E5-B31C-D21B7806E274}
|
||||
{C72A756A-D29D-44C7-83D4-821DBE82DBCA} = {9E49B5B9-9E72-42FB-B684-90CA1B1BCF9C}
|
||||
{EC22261D-0DE1-47DE-8F7C-072675D6F5B4} = {9E49B5B9-9E72-42FB-B684-90CA1B1BCF9C}
|
||||
{AB42054B-1801-4FEE-B5C3-8529C6D7BFDA} = {EC22261D-0DE1-47DE-8F7C-072675D6F5B4}
|
||||
{3A85FA52-F601-422E-A42E-9F187DB28492} = {EC22261D-0DE1-47DE-8F7C-072675D6F5B4}
|
||||
{401C741B-6C7C-4E08-9F09-C3D43D22C0DE} = {EC22261D-0DE1-47DE-8F7C-072675D6F5B4}
|
||||
{79CF58CE-B020-45D8-BDB5-2D8036BEAD14} = {EC22261D-0DE1-47DE-8F7C-072675D6F5B4}
|
||||
{65FE2E38-4529-4C93-A7B0-CF12DD7A70C3} = {EC22261D-0DE1-47DE-8F7C-072675D6F5B4}
|
||||
{A922B5AC-836B-44F4-83F1-3CB9EB08A3F8} = {EC22261D-0DE1-47DE-8F7C-072675D6F5B4}
|
||||
{BD08F027-3BB9-427B-9367-19534B7376B3} = {9E49B5B9-9E72-42FB-B684-90CA1B1BCF9C}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {A666E9B0-125B-4975-B35B-09A6D68A5047}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"Default": {
|
||||
"rules": [
|
||||
"DefaultCompositeRule"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
Meta packages
|
||||
========
|
||||
|
||||
This repo contains NuGet meta packages that help quickly reference sets of common packages.
|
||||
|
||||
This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the [Home](https://github.com/aspnet/home) repo.
|
||||
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Package Versions">
|
||||
<InternalAspNetCoreSdkPackageVersion>2.2.0-preview2-20181004.6</InternalAspNetCoreSdkPackageVersion>
|
||||
<MicrosoftAspNetCoreAspNetCoreModulePackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreAspNetCoreModulePackageVersion>
|
||||
<MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>
|
||||
<MicrosoftAspNetCoreDiagnosticsPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreDiagnosticsPackageVersion>
|
||||
<MicrosoftAspNetCoreHostFilteringPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreHostFilteringPackageVersion>
|
||||
<MicrosoftAspNetCoreHostingPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreHostingPackageVersion>
|
||||
<MicrosoftAspNetCoreRoutingPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreRoutingPackageVersion>
|
||||
<MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
|
||||
<MicrosoftAspNetCoreServerIISPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreServerIISPackageVersion>
|
||||
<MicrosoftAspNetCoreServerIntegrationTestingIISPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreServerIntegrationTestingIISPackageVersion>
|
||||
<MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>0.6.0-preview3-35425</MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>
|
||||
<MicrosoftAspNetCoreServerKestrelHttpsPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreServerKestrelHttpsPackageVersion>
|
||||
<MicrosoftAspNetCoreServerKestrelPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreServerKestrelPackageVersion>
|
||||
<MicrosoftAspNetCoreStaticFilesPackageVersion>2.2.0-preview3-35425</MicrosoftAspNetCoreStaticFilesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsolePackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||
<MicrosoftExtensionsLoggingDebugPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventSourcePackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingEventSourcePackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftNETCoreApp20PackageVersion>2.0.9</MicrosoftNETCoreApp20PackageVersion>
|
||||
<MicrosoftNETCoreApp21PackageVersion>2.1.3</MicrosoftNETCoreApp21PackageVersion>
|
||||
<MicrosoftNETCoreApp22PackageVersion>2.2.0-preview3-27001-02</MicrosoftNETCoreApp22PackageVersion>
|
||||
<MicrosoftNETTestSdkPackageVersion>15.6.1</MicrosoftNETTestSdkPackageVersion>
|
||||
<MoqPackageVersion>4.7.49</MoqPackageVersion>
|
||||
<NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>
|
||||
<XunitPackageVersion>2.3.1</XunitPackageVersion>
|
||||
<XunitRunnerVisualStudioPackageVersion>2.4.0</XunitRunnerVisualStudioPackageVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(DotNetPackageVersionPropsPath)" Condition=" '$(DotNetPackageVersionPropsPath)' != '' " />
|
||||
<PropertyGroup Label="Package Versions: Pinned" />
|
||||
</Project>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<Project>
|
||||
<Import Project="dependencies.props" />
|
||||
|
||||
<ItemGroup>
|
||||
<DotNetCoreRuntime Include="$(MicrosoftNETCoreApp20PackageVersion)" />
|
||||
<DotNetCoreRuntime Include="$(MicrosoftNETCoreApp21PackageVersion)" />
|
||||
<DotNetCoreRuntime Include="$(MicrosoftNETCoreApp22PackageVersion)" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
<Project>
|
||||
<Import Project="$(DotNetRestoreSourcePropsPath)" Condition="'$(DotNetRestoreSourcePropsPath)' != ''"/>
|
||||
|
||||
<PropertyGroup Label="RestoreSources">
|
||||
<RestoreSources>$(DotNetRestoreSources)</RestoreSources>
|
||||
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true' AND '$(AspNetUniverseBuildOffline)' != 'true' ">
|
||||
$(RestoreSources);
|
||||
https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
|
||||
</RestoreSources>
|
||||
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true'">
|
||||
$(RestoreSources);
|
||||
https://api.nuget.org/v3/index.json;
|
||||
</RestoreSources>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:53432/",
|
||||
"sslPort": 0
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"SampleApp": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"applicationUrl": "http://localhost:53433"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
<Project>
|
||||
<Import Project="..\Directory.Build.props" />
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkPackageVersion)" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0</TargetFrameworks>
|
||||
<PackageTags>aspnetcore</PackageTags>
|
||||
<Description>Microsoft.AspNetCore</Description>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<EnableApiCheck>false</EnableApiCheck>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="$(MicrosoftAspNetCoreDiagnosticsPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.HostFiltering" Version="$(MicrosoftAspNetCoreHostFilteringPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="$(MicrosoftAspNetCoreHostingPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Routing" Version="$(MicrosoftAspNetCoreRoutingPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Server.IIS" Version="$(MicrosoftAspNetCoreServerIISPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="$(MicrosoftAspNetCoreServerIISIntegrationPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="$(MicrosoftAspNetCoreServerKestrelPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Https" Version="$(MicrosoftAspNetCoreServerKestrelHttpsPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="$(MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="$(MicrosoftExtensionsConfigurationFileExtensionsPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="$(MicrosoftExtensionsConfigurationJsonPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="$(MicrosoftExtensionsConfigurationCommandLinePackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftExtensionsConfigurationUserSecretsPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsLoggingPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="$(MicrosoftExtensionsLoggingConfigurationPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="$(MicrosoftExtensionsLoggingConsolePackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="$(MicrosoftExtensionsLoggingDebugPackageVersion)" PrivateAssets="None" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.EventSource" Version="$(MicrosoftExtensionsLoggingEventSourcePackageVersion)" PrivateAssets="None" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<Project>
|
||||
<Import Project="..\Directory.Build.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<DeveloperBuildTestTfms>netcoreapp2.2</DeveloperBuildTestTfms>
|
||||
<StandardTestTfms>$(DeveloperBuildTestTfms)</StandardTestTfms>
|
||||
|
||||
<StandardTestTfms Condition=" '$(DeveloperBuild)' != 'true' AND '$(OS)' == 'Windows_NT' ">$(StandardTestTfms);net461</StandardTestTfms>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkPackageVersion)" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>$(StandardTestTfms)</TargetFrameworks>
|
||||
|
||||
<!--
|
||||
Workaround for "Use executable flags in Microsoft.NET.Test.Sdk" (https://github.com/Microsoft/vstest/issues/792).
|
||||
Remove when fixed.
|
||||
-->
|
||||
<HasRuntimeOutput>true</HasRuntimeOutput>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="testCert.pfx" CopyToOutputDirectory="PreserveNewest" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Server.IntegrationTesting" Version="$(MicrosoftAspNetCoreServerIntegrationTestingPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Server.IntegrationTesting.IIS" Version="$(MicrosoftAspNetCoreServerIntegrationTestingIISPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
|
||||
<PackageReference Include="Moq" Version="$(MoqPackageVersion)" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="$(XunitRunnerVisualStudioPackageVersion)" />
|
||||
<PackageReference Include="xunit" Version="$(XunitPackageVersion)" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>$(StandardTestTfms)</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Microsoft.AspNetCore\Microsoft.AspNetCore.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
|
||||
<PackageReference Include="Moq" Version="$(MoqPackageVersion)" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="$(XunitRunnerVisualStudioPackageVersion)" />
|
||||
<PackageReference Include="xunit" Version="$(XunitPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<VersionPrefix>2.2.0</VersionPrefix>
|
||||
<VersionSuffix>rtm</VersionSuffix>
|
||||
<PackageVersion Condition="'$(IsFinalBuild)' == 'true' AND ('$(VersionSuffix)' == 'servicing' OR '$(VersionSuffix)' == 'rtm') ">$(VersionPrefix)</PackageVersion>
|
||||
<PackageVersion Condition="'$(IsFinalBuild)' == 'true' AND '$(VersionSuffix)' != 'servicing' AND '$(VersionSuffix)' != 'rtm' ">$(VersionPrefix)-$(VersionSuffix)-final</PackageVersion>
|
||||
<BuildNumber Condition="'$(BuildNumber)' == ''">t000</BuildNumber>
|
||||
<FeatureBranchVersionPrefix Condition="'$(FeatureBranchVersionPrefix)' == ''">a-</FeatureBranchVersionPrefix>
|
||||
<VersionSuffix Condition="'$(VersionSuffix)' != '' And '$(FeatureBranchVersionSuffix)' != ''">$(FeatureBranchVersionPrefix)$(VersionSuffix)-$([System.Text.RegularExpressions.Regex]::Replace('$(FeatureBranchVersionSuffix)', '[^\w-]', '-'))</VersionSuffix>
|
||||
<VersionSuffix Condition="'$(VersionSuffix)' != '' And '$(BuildNumber)' != ''">$(VersionSuffix)-$(BuildNumber)</VersionSuffix>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -10,12 +10,12 @@
|
|||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)Diagnostics\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)RazorViews\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore.Http.Abstractions" />
|
||||
<Reference Include="Microsoft.EntityFrameworkCore.Relational" />
|
||||
<Reference Include="Microsoft.Extensions.RazorViews.Sources" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@
|
|||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)Diagnostics\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)RazorViews\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)StackTrace\**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -20,8 +22,6 @@
|
|||
<Reference Include="Microsoft.Extensions.FileProviders.Physical" />
|
||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions" />
|
||||
<Reference Include="Microsoft.Extensions.Options" />
|
||||
<Reference Include="Microsoft.Extensions.RazorViews.Sources" PrivateAssets="All" />
|
||||
<Reference Include="Microsoft.Extensions.StackTrace.Sources" PrivateAssets="All" />
|
||||
<Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" PrivateAssets="All" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource" />
|
||||
<Reference Include="System.Reflection.Metadata" />
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
<SignAssembly>true</SignAssembly>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<UseRoutingFromFeatureBranch>true</UseRoutingFromFeatureBranch>
|
||||
<SharedSourceRoot>$(MSBuildThisFileDirectory)..\Shared\</SharedSourceRoot>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
is not otherwise referenced. They avoid unnecessary changes to the Universe build graph or to product
|
||||
dependencies. Do not use these properties elsewhere.
|
||||
-->
|
||||
|
||||
|
||||
<AngleSharpPackageVersion>0.9.9</AngleSharpPackageVersion>
|
||||
<BenchmarkDotNetPackageVersion>0.10.13</BenchmarkDotNetPackageVersion>
|
||||
<BenchmarksOnlyMicrosoftEntityFrameworkCoreDesignPackageVersion>2.1.1</BenchmarksOnlyMicrosoftEntityFrameworkCoreDesignPackageVersion>
|
||||
|
|
@ -64,11 +64,9 @@
|
|||
<MicrosoftCodeAnalysisRazorPackageVersion>2.2.0-rtm-35519</MicrosoftCodeAnalysisRazorPackageVersion>
|
||||
<MicrosoftDiaSymReaderNativePackageVersion>1.7.0</MicrosoftDiaSymReaderNativePackageVersion>
|
||||
<MicrosoftExtensionsCachingMemoryPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsCachingMemoryPackageVersion>
|
||||
<MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>2.1.0</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
|
||||
|
|
@ -83,16 +81,11 @@
|
|||
<MicrosoftExtensionsLoggingDebugPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTestingPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
|
||||
<MicrosoftExtensionsPrimitivesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsPrimitivesPackageVersion>
|
||||
<MicrosoftExtensionsPropertyActivatorSourcesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsPropertyActivatorSourcesPackageVersion>
|
||||
<MicrosoftExtensionsPropertyHelperSourcesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsPropertyHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsSecurityHelperSourcesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsSecurityHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
|
||||
<MicrosoftExtensionsWebEncodersPackageVersion>2.2.0-rtm-35519</MicrosoftExtensionsWebEncodersPackageVersion>
|
||||
<MicrosoftNETCoreApp20PackageVersion>2.0.9</MicrosoftNETCoreApp20PackageVersion>
|
||||
<MicrosoftNETCoreApp21PackageVersion>2.1.3</MicrosoftNETCoreApp21PackageVersion>
|
||||
<MicrosoftNETCoreApp22PackageVersion>2.2.0-preview3-27014-02</MicrosoftNETCoreApp22PackageVersion>
|
||||
|
|
|
|||
|
|
@ -10,13 +10,16 @@ Microsoft.AspNetCore.Mvc.IActionResult</Description>
|
|||
<PackageTags>aspnetcore;aspnetcoremvc</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)ClosedGenericMatcher\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Routing.Abstractions" Version="$(MicrosoftAspNetCoreRoutingAbstractionsPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Net.Http.Headers" Version="$(MicrosoftNetHttpHeadersPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Sources packages">
|
||||
<PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.HashCodeCombiner.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,12 @@ Microsoft.AspNetCore.Mvc.RouteAttribute</Description>
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)..\..\..\Shared\RangeHelper\**\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)CopyOnWriteDictionary\**\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)ObjectMethodExecutor\**\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)PropertyActivator\**\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)PropertyHelper\**\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)RangeHelper\**\*.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)SecurityHelper\**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -41,12 +46,7 @@ Microsoft.AspNetCore.Mvc.RouteAttribute</Description>
|
|||
|
||||
<ItemGroup Label="Sources packages">
|
||||
<PackageReference Include="Microsoft.AspNetCore.ChunkingCookieManager.Sources" PrivateAssets="All" Version="$(MicrosoftAspNetCoreChunkingCookieManagerSourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.CopyOnWriteDictionary.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.ParameterDefaultValue.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.PropertyActivator.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsPropertyActivatorSourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.PropertyHelper.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsPropertyHelperSourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.SecurityHelper.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsSecurityHelperSourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.TypeNameHelper.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsTypeNameHelperSourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.ValueStopwatch.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsValueStopwatchSourcesPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -8,10 +8,13 @@
|
|||
<PackageTags>aspnetcore;aspnetcoremvc;json</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)ClosedGenericMatcher\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Microsoft.AspNetCore.Mvc.Core\Microsoft.AspNetCore.Mvc.Core.csproj" />
|
||||
|
||||
<PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="$(MicrosoftAspNetCoreJsonPatchPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion)" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -10,13 +10,16 @@ System.Web.Http.ApiController</Description>
|
|||
<PackageTags>aspnetcore;aspnetcoremvc;aspnetwebapi</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)PropertyHelper\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Microsoft.AspNetCore.Mvc.Core\Microsoft.AspNetCore.Mvc.Core.csproj" />
|
||||
<ProjectReference Include="..\Microsoft.AspNetCore.Mvc.Formatters.Json\Microsoft.AspNetCore.Mvc.Formatters.Json.csproj" />
|
||||
|
||||
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="$(MicrosoftAspNetWebApiClientPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="$(MicrosoftAspNetCoreWebUtilitiesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.PropertyHelper.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsPropertyHelperSourcesPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
<MicrosoftCodeAnalysisCommonPackageVersion>2.8.0</MicrosoftCodeAnalysisCommonPackageVersion>
|
||||
<MicrosoftCodeAnalysisCSharpPackageVersion>2.8.0</MicrosoftCodeAnalysisCSharpPackageVersion>
|
||||
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
|
||||
<MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>2.1.0</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
|
||||
<MicrosoftExtensionsNonCapturingTimerSourcesPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsNonCapturingTimerSourcesPackageVersion>
|
||||
|
|
@ -62,7 +61,6 @@
|
|||
<XunitPackageVersion>2.3.1</XunitPackageVersion>
|
||||
<XunitRunnerVisualStudioPackageVersion>2.4.0</XunitRunnerVisualStudioPackageVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Package Versions: Pinned" />
|
||||
|
||||
<Import Project="$(DotNetPackageVersionPropsPath)" Condition=" '$(DotNetPackageVersionPropsPath)' != '' " />
|
||||
<PropertyGroup Label="Package Versions: Pinned" />
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -6,13 +6,16 @@
|
|||
<PackageTags>$(PackageTags);taghelper;taghelpers</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)CopyOnWriteDictionary\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Microsoft.AspNetCore.Razor\Microsoft.AspNetCore.Razor.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Html.Abstractions" Version="$(MicrosoftAspNetCoreHtmlAbstractionsPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.CopyOnWriteDictionary.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@
|
|||
<MicrosoftExtensionsLoggingDebugPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsSecurityHelperSourcesPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsSecurityHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsWebEncodersPackageVersion>2.2.0-preview3-35425</MicrosoftExtensionsWebEncodersPackageVersion>
|
||||
<MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>3.14.2</MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>
|
||||
<MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>5.2.0</MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@
|
|||
<PackageTags>aspnetcore;authentication;security</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)SecurityHelper\**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.Core" Version="$(MicrosoftAspNetCoreAuthenticationCorePackageVersion)" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="$(MicrosoftAspNetCoreDataProtectionPackageVersion)" />
|
||||
|
|
@ -15,7 +19,6 @@
|
|||
<PackageReference Include="Microsoft.AspNetCore.Http.Extensions" Version="$(MicrosoftAspNetCoreHttpExtensionsPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="$(MicrosoftExtensionsLoggingAbstractionsPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsOptionsPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.SecurityHelper.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsSecurityHelperSourcesPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.WebEncoders" Version="$(MicrosoftExtensionsWebEncodersPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -8,13 +8,16 @@
|
|||
<PackageTags>aspnetcore;authorization</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(SharedSourceRoot)SecurityHelper\**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Microsoft.AspNetCore.Authorization\Microsoft.AspNetCore.Authorization.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.Abstractions" Version="$(MicrosoftAspNetCoreAuthenticationAbstractionsPackageVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.SecurityHelper.Sources" PrivateAssets="All" Version="$(MicrosoftExtensionsSecurityHelperSourcesPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Server.HttpSys.FunctionalTests
|
|||
|
||||
public ResponseCachingTests()
|
||||
{
|
||||
_absoluteFilePath = Directory.GetFiles(Directory.GetCurrentDirectory()).First();
|
||||
_absoluteFilePath = Path.Combine(Directory.GetCurrentDirectory(), "Microsoft.AspNetCore.Server.HttpSys.dll");
|
||||
_fileLength = new FileInfo(_absoluteFilePath).Length;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,10 +11,10 @@
|
|||
|
||||
<ItemGroup>
|
||||
<Compile Include="$(KestrelSharedSourceRoot)src\ThrowHelper.cs" />
|
||||
<Compile Include="$(SharedSourceRoot)CertificateGeneration\**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore.Certificates.Generation.Sources" PrivateAssets="All" />
|
||||
<Reference Include="Microsoft.AspNetCore.Hosting.Abstractions" />
|
||||
<Reference Include="Microsoft.AspNetCore.Http" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" />
|
||||
|
|
|
|||
|
|
@ -0,0 +1,951 @@
|
|||
// 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.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Microsoft.AspNetCore.Certificates.Generation
|
||||
{
|
||||
internal class CertificateManager
|
||||
{
|
||||
public const string AspNetHttpsOid = "1.3.6.1.4.1.311.84.1.1";
|
||||
public const string AspNetHttpsOidFriendlyName = "ASP.NET Core HTTPS development certificate";
|
||||
|
||||
private const string ServerAuthenticationEnhancedKeyUsageOid = "1.3.6.1.5.5.7.3.1";
|
||||
private const string ServerAuthenticationEnhancedKeyUsageOidFriendlyName = "Server Authentication";
|
||||
|
||||
private const string LocalhostHttpsDnsName = "localhost";
|
||||
private const string LocalhostHttpsDistinguishedName = "CN=" + LocalhostHttpsDnsName;
|
||||
|
||||
public const int RSAMinimumKeySizeInBits = 2048;
|
||||
|
||||
private static readonly TimeSpan MaxRegexTimeout = TimeSpan.FromMinutes(1);
|
||||
private const string CertificateSubjectRegex = "CN=(.*[^,]+).*";
|
||||
private const string MacOSSystemKeyChain = "/Library/Keychains/System.keychain";
|
||||
private static readonly string MacOSUserKeyChain = Environment.GetEnvironmentVariable("HOME") + "/Library/Keychains/login.keychain-db";
|
||||
private const string MacOSFindCertificateCommandLine = "security";
|
||||
#if NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2
|
||||
private static readonly string MacOSFindCertificateCommandLineArgumentsFormat = "find-certificate -c {0} -a -Z -p " + MacOSSystemKeyChain;
|
||||
#endif
|
||||
private const string MacOSFindCertificateOutputRegex = "SHA-1 hash: ([0-9A-Z]+)";
|
||||
private const string MacOSRemoveCertificateTrustCommandLine = "sudo";
|
||||
private const string MacOSRemoveCertificateTrustCommandLineArgumentsFormat = "security remove-trusted-cert -d {0}";
|
||||
private const string MacOSDeleteCertificateCommandLine = "sudo";
|
||||
private const string MacOSDeleteCertificateCommandLineArgumentsFormat = "security delete-certificate -Z {0} {1}";
|
||||
private const string MacOSTrustCertificateCommandLine = "sudo";
|
||||
#if NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2
|
||||
private static readonly string MacOSTrustCertificateCommandLineArguments = "security add-trusted-cert -d -r trustRoot -k " + MacOSSystemKeyChain + " ";
|
||||
#endif
|
||||
private const int UserCancelledErrorCode = 1223;
|
||||
|
||||
public IList<X509Certificate2> ListCertificates(
|
||||
CertificatePurpose purpose,
|
||||
StoreName storeName,
|
||||
StoreLocation location,
|
||||
bool isValid,
|
||||
bool requireExportable = true,
|
||||
DiagnosticInformation diagnostics = null)
|
||||
{
|
||||
diagnostics?.Debug($"Listing '{purpose.ToString()}' certificates on '{location}\\{storeName}'.");
|
||||
var certificates = new List<X509Certificate2>();
|
||||
try
|
||||
{
|
||||
using (var store = new X509Store(storeName, location))
|
||||
{
|
||||
store.Open(OpenFlags.ReadOnly);
|
||||
certificates.AddRange(store.Certificates.OfType<X509Certificate2>());
|
||||
IEnumerable<X509Certificate2> matchingCertificates = certificates;
|
||||
switch (purpose)
|
||||
{
|
||||
case CertificatePurpose.All:
|
||||
matchingCertificates = matchingCertificates
|
||||
.Where(c => HasOid(c, AspNetHttpsOid));
|
||||
break;
|
||||
case CertificatePurpose.HTTPS:
|
||||
matchingCertificates = matchingCertificates
|
||||
.Where(c => HasOid(c, AspNetHttpsOid));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
diagnostics?.Debug(diagnostics.DescribeCertificates(matchingCertificates));
|
||||
if (isValid)
|
||||
{
|
||||
// Ensure the certificate hasn't expired, has a private key and its exportable
|
||||
// (for container/unix scenarios).
|
||||
diagnostics?.Debug("Checking certificates for validity.");
|
||||
var now = DateTimeOffset.Now;
|
||||
var validCertificates = matchingCertificates
|
||||
.Where(c => c.NotBefore <= now &&
|
||||
now <= c.NotAfter &&
|
||||
(!requireExportable || !RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || IsExportable(c)))
|
||||
.ToArray();
|
||||
|
||||
var invalidCertificates = matchingCertificates.Except(validCertificates);
|
||||
|
||||
diagnostics?.Debug("Listing valid certificates");
|
||||
diagnostics?.Debug(diagnostics.DescribeCertificates(validCertificates));
|
||||
diagnostics?.Debug("Listing invalid certificates");
|
||||
diagnostics?.Debug(diagnostics.DescribeCertificates(invalidCertificates));
|
||||
|
||||
matchingCertificates = validCertificates;
|
||||
}
|
||||
|
||||
// We need to enumerate the certificates early to prevent dispoisng issues.
|
||||
matchingCertificates = matchingCertificates.ToList();
|
||||
|
||||
var certificatesToDispose = certificates.Except(matchingCertificates);
|
||||
DisposeCertificates(certificatesToDispose);
|
||||
|
||||
store.Close();
|
||||
|
||||
return (IList<X509Certificate2>)matchingCertificates;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
DisposeCertificates(certificates);
|
||||
certificates.Clear();
|
||||
return certificates;
|
||||
}
|
||||
|
||||
bool HasOid(X509Certificate2 certificate, string oid) =>
|
||||
certificate.Extensions.OfType<X509Extension>()
|
||||
.Any(e => string.Equals(oid, e.Oid.Value, StringComparison.Ordinal));
|
||||
#if !XPLAT
|
||||
bool IsExportable(X509Certificate2 c) =>
|
||||
((c.GetRSAPrivateKey() is RSACryptoServiceProvider rsaPrivateKey &&
|
||||
rsaPrivateKey.CspKeyContainerInfo.Exportable) ||
|
||||
(c.GetRSAPrivateKey() is RSACng cngPrivateKey &&
|
||||
cngPrivateKey.Key.ExportPolicy == CngExportPolicies.AllowExport));
|
||||
#else
|
||||
// Only check for RSA CryptoServiceProvider and do not fail in XPlat tooling as
|
||||
// System.Security.Cryptography.Cng is not part of the shared framework and we don't
|
||||
// want to bring the dependency in on CLI scenarios. This functionality will be used
|
||||
// on CLI scenarios as part of the first run experience, so checking the exportability
|
||||
// of the certificate is not important.
|
||||
bool IsExportable(X509Certificate2 c) =>
|
||||
((c.GetRSAPrivateKey() is RSACryptoServiceProvider rsaPrivateKey &&
|
||||
rsaPrivateKey.CspKeyContainerInfo.Exportable) || !(c.GetRSAPrivateKey() is RSACryptoServiceProvider));
|
||||
#endif
|
||||
}
|
||||
|
||||
private static void DisposeCertificates(IEnumerable<X509Certificate2> disposables)
|
||||
{
|
||||
foreach (var disposable in disposables)
|
||||
{
|
||||
try
|
||||
{
|
||||
disposable.Dispose();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2
|
||||
|
||||
public X509Certificate2 CreateAspNetCoreHttpsDevelopmentCertificate(DateTimeOffset notBefore, DateTimeOffset notAfter, string subjectOverride, DiagnosticInformation diagnostics = null)
|
||||
{
|
||||
var subject = new X500DistinguishedName(subjectOverride ?? LocalhostHttpsDistinguishedName);
|
||||
var extensions = new List<X509Extension>();
|
||||
var sanBuilder = new SubjectAlternativeNameBuilder();
|
||||
sanBuilder.AddDnsName(LocalhostHttpsDnsName);
|
||||
|
||||
var keyUsage = new X509KeyUsageExtension(X509KeyUsageFlags.KeyEncipherment, critical: true);
|
||||
var enhancedKeyUsage = new X509EnhancedKeyUsageExtension(
|
||||
new OidCollection() {
|
||||
new Oid(
|
||||
ServerAuthenticationEnhancedKeyUsageOid,
|
||||
ServerAuthenticationEnhancedKeyUsageOidFriendlyName)
|
||||
},
|
||||
critical: true);
|
||||
|
||||
var basicConstraints = new X509BasicConstraintsExtension(
|
||||
certificateAuthority: false,
|
||||
hasPathLengthConstraint: false,
|
||||
pathLengthConstraint: 0,
|
||||
critical: true);
|
||||
|
||||
var aspNetHttpsExtension = new X509Extension(
|
||||
new AsnEncodedData(
|
||||
new Oid(AspNetHttpsOid, AspNetHttpsOidFriendlyName),
|
||||
Encoding.ASCII.GetBytes(AspNetHttpsOidFriendlyName)),
|
||||
critical: false);
|
||||
|
||||
extensions.Add(basicConstraints);
|
||||
extensions.Add(keyUsage);
|
||||
extensions.Add(enhancedKeyUsage);
|
||||
extensions.Add(sanBuilder.Build(critical: true));
|
||||
extensions.Add(aspNetHttpsExtension);
|
||||
|
||||
var certificate = CreateSelfSignedCertificate(subject, extensions, notBefore, notAfter);
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
certificate.FriendlyName = AspNetHttpsOidFriendlyName;
|
||||
}
|
||||
|
||||
return certificate;
|
||||
}
|
||||
|
||||
public X509Certificate2 CreateSelfSignedCertificate(
|
||||
X500DistinguishedName subject,
|
||||
IEnumerable<X509Extension> extensions,
|
||||
DateTimeOffset notBefore,
|
||||
DateTimeOffset notAfter)
|
||||
{
|
||||
var key = CreateKeyMaterial(RSAMinimumKeySizeInBits);
|
||||
|
||||
var request = new CertificateRequest(subject, key, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
|
||||
foreach (var extension in extensions)
|
||||
{
|
||||
request.CertificateExtensions.Add(extension);
|
||||
}
|
||||
|
||||
return request.CreateSelfSigned(notBefore, notAfter);
|
||||
|
||||
RSA CreateKeyMaterial(int minimumKeySize)
|
||||
{
|
||||
var rsa = RSA.Create(minimumKeySize);
|
||||
if (rsa.KeySize < minimumKeySize)
|
||||
{
|
||||
throw new InvalidOperationException($"Failed to create a key with a size of {minimumKeySize} bits");
|
||||
}
|
||||
|
||||
return rsa;
|
||||
}
|
||||
}
|
||||
|
||||
public X509Certificate2 SaveCertificateInStore(X509Certificate2 certificate, StoreName name, StoreLocation location, DiagnosticInformation diagnostics = null)
|
||||
{
|
||||
diagnostics?.Debug("Saving the certificate into the certificate store.");
|
||||
var imported = certificate;
|
||||
if (!RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
||||
{
|
||||
// On non OSX systems we need to export the certificate and import it so that the transient
|
||||
// key that we generated gets persisted.
|
||||
var export = certificate.Export(X509ContentType.Pkcs12, "");
|
||||
imported = new X509Certificate2(export, "", X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
|
||||
Array.Clear(export, 0, export.Length);
|
||||
}
|
||||
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
imported.FriendlyName = certificate.FriendlyName;
|
||||
}
|
||||
|
||||
using (var store = new X509Store(name, location))
|
||||
{
|
||||
store.Open(OpenFlags.ReadWrite);
|
||||
store.Add(imported);
|
||||
store.Close();
|
||||
};
|
||||
|
||||
return imported;
|
||||
}
|
||||
|
||||
public void ExportCertificate(X509Certificate2 certificate, string path, bool includePrivateKey, string password, DiagnosticInformation diagnostics = null)
|
||||
{
|
||||
diagnostics?.Debug(
|
||||
$"Exporting certificate to '{path}'",
|
||||
includePrivateKey ? "The certificate will contain the private key" : "The certificate will not contain the private key");
|
||||
if (includePrivateKey && password == null)
|
||||
{
|
||||
diagnostics?.Debug("No password was provided for the certificate.");
|
||||
}
|
||||
|
||||
var targetDirectoryPath = Path.GetDirectoryName(path);
|
||||
if (targetDirectoryPath != "")
|
||||
{
|
||||
diagnostics?.Debug($"Ensuring that the directory for the target exported certificate path exists '{targetDirectoryPath}'");
|
||||
Directory.CreateDirectory(targetDirectoryPath);
|
||||
}
|
||||
|
||||
byte[] bytes;
|
||||
if (includePrivateKey)
|
||||
{
|
||||
try
|
||||
{
|
||||
diagnostics?.Debug($"Exporting the certificate including the private key.");
|
||||
bytes = certificate.Export(X509ContentType.Pkcs12, password);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
diagnostics?.Error($"Failed to export the certificate with the private key", e);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
diagnostics?.Debug($"Exporting the certificate without the private key.");
|
||||
bytes = certificate.Export(X509ContentType.Cert);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
diagnostics?.Error($"Failed to export the certificate without the private key", ex);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
diagnostics?.Debug($"Writing exported certificate to path '{path}'.");
|
||||
File.WriteAllBytes(path, bytes);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
diagnostics?.Error("Failed writing the certificate to the target path", ex);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Array.Clear(bytes, 0, bytes.Length);
|
||||
}
|
||||
}
|
||||
|
||||
public void TrustCertificate(X509Certificate2 certificate, DiagnosticInformation diagnostics = null)
|
||||
{
|
||||
// Strip certificate of the private key if any.
|
||||
var publicCertificate = new X509Certificate2(certificate.Export(X509ContentType.Cert));
|
||||
|
||||
if (!IsTrusted(publicCertificate))
|
||||
{
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
diagnostics?.Debug("Trusting the certificate on Windows.");
|
||||
TrustCertificateOnWindows(certificate, publicCertificate, diagnostics);
|
||||
}
|
||||
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
||||
{
|
||||
diagnostics?.Debug("Trusting the certificate on MAC.");
|
||||
TrustCertificateOnMac(publicCertificate, diagnostics);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void TrustCertificateOnMac(X509Certificate2 publicCertificate, DiagnosticInformation diagnostics)
|
||||
{
|
||||
var tmpFile = Path.GetTempFileName();
|
||||
try
|
||||
{
|
||||
ExportCertificate(publicCertificate, tmpFile, includePrivateKey: false, password: null);
|
||||
diagnostics?.Debug("Running the trust command on Mac OS");
|
||||
using (var process = Process.Start(MacOSTrustCertificateCommandLine, MacOSTrustCertificateCommandLineArguments + tmpFile))
|
||||
{
|
||||
process.WaitForExit();
|
||||
if (process.ExitCode != 0)
|
||||
{
|
||||
throw new InvalidOperationException("There was an error trusting the certificate.");
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (File.Exists(tmpFile))
|
||||
{
|
||||
File.Delete(tmpFile);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// We don't care if we can't delete the temp file.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void TrustCertificateOnWindows(X509Certificate2 certificate, X509Certificate2 publicCertificate, DiagnosticInformation diagnostics = null)
|
||||
{
|
||||
publicCertificate.FriendlyName = certificate.FriendlyName;
|
||||
|
||||
using (var store = new X509Store(StoreName.Root, StoreLocation.CurrentUser))
|
||||
{
|
||||
store.Open(OpenFlags.ReadWrite);
|
||||
var existing = store.Certificates.Find(X509FindType.FindByThumbprint, publicCertificate.Thumbprint, validOnly: false);
|
||||
if (existing.Count > 0)
|
||||
{
|
||||
diagnostics?.Debug("Certificate already trusted. Skipping trust step.");
|
||||
DisposeCertificates(existing.OfType<X509Certificate2>());
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
diagnostics?.Debug("Adding certificate to the store.");
|
||||
store.Add(publicCertificate);
|
||||
}
|
||||
catch (CryptographicException exception) when (exception.HResult == UserCancelledErrorCode)
|
||||
{
|
||||
diagnostics?.Debug("User cancelled the trust prompt.");
|
||||
throw new UserCancelledTrustException();
|
||||
}
|
||||
store.Close();
|
||||
};
|
||||
}
|
||||
|
||||
public bool IsTrusted(X509Certificate2 certificate)
|
||||
{
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
return ListCertificates(CertificatePurpose.HTTPS, StoreName.Root, StoreLocation.CurrentUser, isValid: true, requireExportable: false)
|
||||
.Any(c => c.Thumbprint == certificate.Thumbprint);
|
||||
}
|
||||
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
||||
{
|
||||
var subjectMatch = Regex.Match(certificate.Subject, CertificateSubjectRegex, RegexOptions.Singleline, MaxRegexTimeout);
|
||||
if (!subjectMatch.Success)
|
||||
{
|
||||
throw new InvalidOperationException($"Can't determine the subject for the certificate with subject '{certificate.Subject}'.");
|
||||
}
|
||||
var subject = subjectMatch.Groups[1].Value;
|
||||
using (var checkTrustProcess = Process.Start(new ProcessStartInfo(
|
||||
MacOSFindCertificateCommandLine,
|
||||
string.Format(MacOSFindCertificateCommandLineArgumentsFormat, subject))
|
||||
{
|
||||
RedirectStandardOutput = true
|
||||
}))
|
||||
{
|
||||
var output = checkTrustProcess.StandardOutput.ReadToEnd();
|
||||
checkTrustProcess.WaitForExit();
|
||||
var matches = Regex.Matches(output, MacOSFindCertificateOutputRegex, RegexOptions.Multiline, MaxRegexTimeout);
|
||||
var hashes = matches.OfType<Match>().Select(m => m.Groups[1].Value).ToList();
|
||||
return hashes.Any(h => string.Equals(h, certificate.Thumbprint, StringComparison.Ordinal));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void CleanupHttpsCertificates(string subject = LocalhostHttpsDistinguishedName)
|
||||
{
|
||||
CleanupCertificates(CertificatePurpose.HTTPS, subject);
|
||||
}
|
||||
|
||||
public void CleanupCertificates(CertificatePurpose purpose, string subject)
|
||||
{
|
||||
// On OS X we don't have a good way to manage trusted certificates in the system keychain
|
||||
// so we do everything by invoking the native toolchain.
|
||||
// This has some limitations, like for example not being able to identify our custom OID extension. For that
|
||||
// matter, when we are cleaning up certificates on the machine, we start by removing the trusted certificates.
|
||||
// To do this, we list the certificates that we can identify on the current user personal store and we invoke
|
||||
// the native toolchain to remove them from the sytem keychain. Once we have removed the trusted certificates,
|
||||
// we remove the certificates from the local user store to finish up the cleanup.
|
||||
var certificates = ListCertificates(purpose, StoreName.My, StoreLocation.CurrentUser, isValid: false);
|
||||
foreach (var certificate in certificates)
|
||||
{
|
||||
RemoveCertificate(certificate, RemoveLocations.All);
|
||||
}
|
||||
}
|
||||
|
||||
public DiagnosticInformation CleanupHttpsCertificates2(string subject = LocalhostHttpsDistinguishedName)
|
||||
{
|
||||
return CleanupCertificates2(CertificatePurpose.HTTPS, subject);
|
||||
}
|
||||
|
||||
public DiagnosticInformation CleanupCertificates2(CertificatePurpose purpose, string subject)
|
||||
{
|
||||
var diagnostics = new DiagnosticInformation();
|
||||
// On OS X we don't have a good way to manage trusted certificates in the system keychain
|
||||
// so we do everything by invoking the native toolchain.
|
||||
// This has some limitations, like for example not being able to identify our custom OID extension. For that
|
||||
// matter, when we are cleaning up certificates on the machine, we start by removing the trusted certificates.
|
||||
// To do this, we list the certificates that we can identify on the current user personal store and we invoke
|
||||
// the native toolchain to remove them from the sytem keychain. Once we have removed the trusted certificates,
|
||||
// we remove the certificates from the local user store to finish up the cleanup.
|
||||
var certificates = ListCertificates(purpose, StoreName.My, StoreLocation.CurrentUser, isValid: false, requireExportable: true, diagnostics);
|
||||
foreach (var certificate in certificates)
|
||||
{
|
||||
RemoveCertificate(certificate, RemoveLocations.All, diagnostics);
|
||||
}
|
||||
|
||||
return diagnostics;
|
||||
}
|
||||
|
||||
public void RemoveAllCertificates(CertificatePurpose purpose, StoreName storeName, StoreLocation storeLocation, string subject = null)
|
||||
{
|
||||
var certificates = RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ?
|
||||
ListCertificates(purpose, StoreName.My, StoreLocation.CurrentUser, isValid: false) :
|
||||
ListCertificates(purpose, storeName, storeLocation, isValid: false);
|
||||
var certificatesWithName = subject == null ? certificates : certificates.Where(c => c.Subject == subject);
|
||||
|
||||
var removeLocation = storeName == StoreName.My ? RemoveLocations.Local : RemoveLocations.Trusted;
|
||||
|
||||
foreach (var certificate in certificates)
|
||||
{
|
||||
RemoveCertificate(certificate, removeLocation);
|
||||
}
|
||||
|
||||
DisposeCertificates(certificates);
|
||||
}
|
||||
|
||||
private void RemoveCertificate(X509Certificate2 certificate, RemoveLocations locations, DiagnosticInformation diagnostics = null)
|
||||
{
|
||||
switch (locations)
|
||||
{
|
||||
case RemoveLocations.Undefined:
|
||||
throw new InvalidOperationException($"'{nameof(RemoveLocations.Undefined)}' is not a valid location.");
|
||||
case RemoveLocations.Local:
|
||||
RemoveCertificateFromUserStore(certificate, diagnostics);
|
||||
break;
|
||||
case RemoveLocations.Trusted when !RuntimeInformation.IsOSPlatform(OSPlatform.Linux):
|
||||
RemoveCertificateFromTrustedRoots(certificate, diagnostics);
|
||||
break;
|
||||
case RemoveLocations.All:
|
||||
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||
{
|
||||
RemoveCertificateFromTrustedRoots(certificate, diagnostics);
|
||||
}
|
||||
RemoveCertificateFromUserStore(certificate, diagnostics);
|
||||
break;
|
||||
default:
|
||||
throw new InvalidOperationException("Invalid location.");
|
||||
}
|
||||
}
|
||||
|
||||
private static void RemoveCertificateFromUserStore(X509Certificate2 certificate, DiagnosticInformation diagnostics)
|
||||
{
|
||||
diagnostics?.Debug($"Trying to remove certificate with thumbprint '{certificate.Thumbprint}' from certificate store '{StoreLocation.CurrentUser}\\{StoreName.My}'.");
|
||||
using (var store = new X509Store(StoreName.My, StoreLocation.CurrentUser))
|
||||
{
|
||||
store.Open(OpenFlags.ReadWrite);
|
||||
var matching = store.Certificates
|
||||
.OfType<X509Certificate2>()
|
||||
.Single(c => c.SerialNumber == certificate.SerialNumber);
|
||||
|
||||
store.Remove(matching);
|
||||
store.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveCertificateFromTrustedRoots(X509Certificate2 certificate, DiagnosticInformation diagnostics)
|
||||
{
|
||||
diagnostics?.Debug($"Trying to remove certificate with thumbprint '{certificate.Thumbprint}' from certificate store '{StoreLocation.CurrentUser}\\{StoreName.Root}'.");
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
using (var store = new X509Store(StoreName.Root, StoreLocation.CurrentUser))
|
||||
{
|
||||
store.Open(OpenFlags.ReadWrite);
|
||||
var matching = store.Certificates
|
||||
.OfType<X509Certificate2>()
|
||||
.SingleOrDefault(c => c.SerialNumber == certificate.SerialNumber);
|
||||
|
||||
if (matching != null)
|
||||
{
|
||||
store.Remove(matching);
|
||||
}
|
||||
|
||||
store.Close();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IsTrusted(certificate)) // On OSX this check just ensures its on the system keychain
|
||||
{
|
||||
try
|
||||
{
|
||||
diagnostics?.Debug("Trying to remove the certificate trust rule.");
|
||||
RemoveCertificateTrustRule(certificate);
|
||||
}
|
||||
catch
|
||||
{
|
||||
diagnostics?.Debug("Failed to remove the certificate trust rule.");
|
||||
// We don't care if we fail to remove the trust rule if
|
||||
// for some reason the certificate became untrusted.
|
||||
// The delete command will fail if the certificate is
|
||||
// trusted.
|
||||
}
|
||||
RemoveCertificateFromKeyChain(MacOSSystemKeyChain, certificate);
|
||||
}
|
||||
else
|
||||
{
|
||||
diagnostics?.Debug("The certificate was not trusted.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void RemoveCertificateTrustRule(X509Certificate2 certificate)
|
||||
{
|
||||
var certificatePath = Path.GetTempFileName();
|
||||
try
|
||||
{
|
||||
var certBytes = certificate.Export(X509ContentType.Cert);
|
||||
File.WriteAllBytes(certificatePath, certBytes);
|
||||
var processInfo = new ProcessStartInfo(
|
||||
MacOSRemoveCertificateTrustCommandLine,
|
||||
string.Format(
|
||||
MacOSRemoveCertificateTrustCommandLineArgumentsFormat,
|
||||
certificatePath
|
||||
));
|
||||
using (var process = Process.Start(processInfo))
|
||||
{
|
||||
process.WaitForExit();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (File.Exists(certificatePath))
|
||||
{
|
||||
File.Delete(certificatePath);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// We don't care about failing to do clean-up on a temp file.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void RemoveCertificateFromKeyChain(string keyChain, X509Certificate2 certificate)
|
||||
{
|
||||
var processInfo = new ProcessStartInfo(
|
||||
MacOSDeleteCertificateCommandLine,
|
||||
string.Format(
|
||||
MacOSDeleteCertificateCommandLineArgumentsFormat,
|
||||
certificate.Thumbprint.ToUpperInvariant(),
|
||||
keyChain
|
||||
))
|
||||
{
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true
|
||||
};
|
||||
|
||||
using (var process = Process.Start(processInfo))
|
||||
{
|
||||
var output = process.StandardOutput.ReadToEnd() + process.StandardError.ReadToEnd();
|
||||
process.WaitForExit();
|
||||
|
||||
if (process.ExitCode != 0)
|
||||
{
|
||||
throw new InvalidOperationException($@"There was an error removing the certificate with thumbprint '{certificate.Thumbprint}'.
|
||||
|
||||
{output}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public EnsureCertificateResult EnsureAspNetCoreHttpsDevelopmentCertificate(
|
||||
DateTimeOffset notBefore,
|
||||
DateTimeOffset notAfter,
|
||||
string path = null,
|
||||
bool trust = false,
|
||||
bool includePrivateKey = false,
|
||||
string password = null,
|
||||
string subject = LocalhostHttpsDistinguishedName)
|
||||
{
|
||||
return EnsureValidCertificateExists(notBefore, notAfter, CertificatePurpose.HTTPS, path, trust, includePrivateKey, password, subject);
|
||||
}
|
||||
|
||||
public EnsureCertificateResult EnsureValidCertificateExists(
|
||||
DateTimeOffset notBefore,
|
||||
DateTimeOffset notAfter,
|
||||
CertificatePurpose purpose,
|
||||
string path = null,
|
||||
bool trust = false,
|
||||
bool includePrivateKey = false,
|
||||
string password = null,
|
||||
string subjectOverride = null)
|
||||
{
|
||||
if (purpose == CertificatePurpose.All)
|
||||
{
|
||||
throw new ArgumentException("The certificate must have a specific purpose.");
|
||||
}
|
||||
|
||||
var certificates = ListCertificates(purpose, StoreName.My, StoreLocation.CurrentUser, isValid: true).Concat(
|
||||
ListCertificates(purpose, StoreName.My, StoreLocation.LocalMachine, isValid: true));
|
||||
|
||||
certificates = subjectOverride == null ? certificates : certificates.Where(c => c.Subject == subjectOverride);
|
||||
|
||||
var result = EnsureCertificateResult.Succeeded;
|
||||
|
||||
X509Certificate2 certificate = null;
|
||||
if (certificates.Count() > 0)
|
||||
{
|
||||
certificate = certificates.FirstOrDefault();
|
||||
result = EnsureCertificateResult.ValidCertificatePresent;
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
switch (purpose)
|
||||
{
|
||||
case CertificatePurpose.All:
|
||||
throw new InvalidOperationException("The certificate must have a specific purpose.");
|
||||
case CertificatePurpose.HTTPS:
|
||||
certificate = CreateAspNetCoreHttpsDevelopmentCertificate(notBefore, notAfter, subjectOverride);
|
||||
break;
|
||||
default:
|
||||
throw new InvalidOperationException("The certificate must have a purpose.");
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
return EnsureCertificateResult.ErrorCreatingTheCertificate;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
certificate = SaveCertificateInStore(certificate, StoreName.My, StoreLocation.CurrentUser);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return EnsureCertificateResult.ErrorSavingTheCertificateIntoTheCurrentUserPersonalStore;
|
||||
}
|
||||
}
|
||||
if (path != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
ExportCertificate(certificate, path, includePrivateKey, password);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return EnsureCertificateResult.ErrorExportingTheCertificate;
|
||||
}
|
||||
}
|
||||
|
||||
if ((RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) && trust)
|
||||
{
|
||||
try
|
||||
{
|
||||
TrustCertificate(certificate);
|
||||
}
|
||||
catch (UserCancelledTrustException)
|
||||
{
|
||||
return EnsureCertificateResult.UserCancelledTrustStep;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return EnsureCertificateResult.FailedToTrustTheCertificate;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// This is just to avoid breaking changes across repos.
|
||||
// Will be renamed back to EnsureAspNetCoreHttpsDevelopmentCertificate once updates are made elsewhere.
|
||||
public DetailedEnsureCertificateResult EnsureAspNetCoreHttpsDevelopmentCertificate2(
|
||||
DateTimeOffset notBefore,
|
||||
DateTimeOffset notAfter,
|
||||
string path = null,
|
||||
bool trust = false,
|
||||
bool includePrivateKey = false,
|
||||
string password = null,
|
||||
string subject = LocalhostHttpsDistinguishedName)
|
||||
{
|
||||
return EnsureValidCertificateExists2(notBefore, notAfter, CertificatePurpose.HTTPS, path, trust, includePrivateKey, password, subject);
|
||||
}
|
||||
|
||||
public DetailedEnsureCertificateResult EnsureValidCertificateExists2(
|
||||
DateTimeOffset notBefore,
|
||||
DateTimeOffset notAfter,
|
||||
CertificatePurpose purpose,
|
||||
string path,
|
||||
bool trust,
|
||||
bool includePrivateKey,
|
||||
string password,
|
||||
string subject)
|
||||
{
|
||||
if (purpose == CertificatePurpose.All)
|
||||
{
|
||||
throw new ArgumentException("The certificate must have a specific purpose.");
|
||||
}
|
||||
|
||||
var result = new DetailedEnsureCertificateResult();
|
||||
|
||||
var certificates = ListCertificates(purpose, StoreName.My, StoreLocation.CurrentUser, isValid: true, requireExportable: true, result.Diagnostics).Concat(
|
||||
ListCertificates(purpose, StoreName.My, StoreLocation.LocalMachine, isValid: true, requireExportable: true, result.Diagnostics));
|
||||
|
||||
var filteredCertificates = subject == null ? certificates : certificates.Where(c => c.Subject == subject);
|
||||
if (subject != null)
|
||||
{
|
||||
var excludedCertificates = certificates.Except(filteredCertificates);
|
||||
|
||||
result.Diagnostics.Debug($"Filtering found certificates to those with a subject equal to '{subject}'");
|
||||
result.Diagnostics.Debug(result.Diagnostics.DescribeCertificates(filteredCertificates));
|
||||
result.Diagnostics.Debug($"Listing certificates excluded from consideration.");
|
||||
result.Diagnostics.Debug(result.Diagnostics.DescribeCertificates(excludedCertificates));
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Diagnostics.Debug("Skipped filtering certificates by subject.");
|
||||
}
|
||||
|
||||
certificates = filteredCertificates;
|
||||
|
||||
result.ResultCode = EnsureCertificateResult.Succeeded;
|
||||
|
||||
X509Certificate2 certificate = null;
|
||||
if (certificates.Count() > 0)
|
||||
{
|
||||
result.Diagnostics.Debug("Found valid certificates present on the machine.");
|
||||
result.Diagnostics.Debug(result.Diagnostics.DescribeCertificates(certificates));
|
||||
certificate = certificates.First();
|
||||
result.Diagnostics.Debug("Selected certificate");
|
||||
result.Diagnostics.Debug(result.Diagnostics.DescribeCertificates(certificate));
|
||||
result.ResultCode = EnsureCertificateResult.ValidCertificatePresent;
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Diagnostics.Debug("No valid certificates present on this machine. Trying to create one.");
|
||||
try
|
||||
{
|
||||
switch (purpose)
|
||||
{
|
||||
case CertificatePurpose.All:
|
||||
throw new InvalidOperationException("The certificate must have a specific purpose.");
|
||||
case CertificatePurpose.HTTPS:
|
||||
certificate = CreateAspNetCoreHttpsDevelopmentCertificate(notBefore, notAfter, subject, result.Diagnostics);
|
||||
break;
|
||||
default:
|
||||
throw new InvalidOperationException("The certificate must have a purpose.");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Diagnostics.Error("Error creating the certificate.", e);
|
||||
result.ResultCode = EnsureCertificateResult.ErrorCreatingTheCertificate;
|
||||
return result;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
certificate = SaveCertificateInStore(certificate, StoreName.My, StoreLocation.CurrentUser, result.Diagnostics);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Diagnostics.Error($"Error saving the certificate in the certificate store '{StoreLocation.CurrentUser}\\{StoreName.My}'.", e);
|
||||
result.ResultCode = EnsureCertificateResult.ErrorSavingTheCertificateIntoTheCurrentUserPersonalStore;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
if (path != null)
|
||||
{
|
||||
result.Diagnostics.Debug("Trying to export the certificate.");
|
||||
result.Diagnostics.Debug(result.Diagnostics.DescribeCertificates(certificate));
|
||||
try
|
||||
{
|
||||
ExportCertificate(certificate, path, includePrivateKey, password, result.Diagnostics);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Diagnostics.Error("An error ocurred exporting the certificate.", e);
|
||||
result.ResultCode = EnsureCertificateResult.ErrorExportingTheCertificate;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if ((RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) && trust)
|
||||
{
|
||||
try
|
||||
{
|
||||
result.Diagnostics.Debug("Trying to export the certificate.");
|
||||
TrustCertificate(certificate, result.Diagnostics);
|
||||
}
|
||||
catch (UserCancelledTrustException)
|
||||
{
|
||||
result.Diagnostics.Error("The user cancelled trusting the certificate.", null);
|
||||
result.ResultCode = EnsureCertificateResult.UserCancelledTrustStep;
|
||||
return result;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Diagnostics.Error("There was an error trusting the certificate.", e);
|
||||
result.ResultCode = EnsureCertificateResult.FailedToTrustTheCertificate;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private class UserCancelledTrustException : Exception
|
||||
{
|
||||
}
|
||||
|
||||
private enum RemoveLocations
|
||||
{
|
||||
Undefined,
|
||||
Local,
|
||||
Trusted,
|
||||
All
|
||||
}
|
||||
|
||||
internal class DetailedEnsureCertificateResult
|
||||
{
|
||||
public EnsureCertificateResult ResultCode { get; set; }
|
||||
public DiagnosticInformation Diagnostics { get; set; } = new DiagnosticInformation();
|
||||
}
|
||||
#endif
|
||||
|
||||
internal class DiagnosticInformation
|
||||
{
|
||||
public IList<string> Messages { get; } = new List<string>();
|
||||
|
||||
public IList<Exception> Exceptions { get; } = new List<Exception>();
|
||||
|
||||
internal void Debug(params string[] messages)
|
||||
{
|
||||
foreach (var message in messages)
|
||||
{
|
||||
Messages.Add(message);
|
||||
}
|
||||
}
|
||||
|
||||
internal string[] DescribeCertificates(params X509Certificate2[] certificates)
|
||||
{
|
||||
return DescribeCertificates(certificates.AsEnumerable());
|
||||
}
|
||||
|
||||
internal string[] DescribeCertificates(IEnumerable<X509Certificate2> certificates)
|
||||
{
|
||||
var result = new List<string>();
|
||||
result.Add($"'{certificates.Count()}' found matching the criteria.");
|
||||
result.Add($"SUBJECT - THUMBPRINT - NOT BEFORE - EXPIRES - HAS PRIVATE KEY");
|
||||
foreach (var certificate in certificates)
|
||||
{
|
||||
result.Add(DescribeCertificate(certificate));
|
||||
}
|
||||
|
||||
return result.ToArray();
|
||||
}
|
||||
|
||||
private static string DescribeCertificate(X509Certificate2 certificate) =>
|
||||
$"{certificate.Subject} - {certificate.Thumbprint} - {certificate.NotBefore} - {certificate.NotAfter} - {certificate.HasPrivateKey}";
|
||||
|
||||
internal void Error(string preamble, Exception e)
|
||||
{
|
||||
Messages.Add(preamble);
|
||||
if (Exceptions.Count > 0 && Exceptions[Exceptions.Count - 1] == e)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var ex = e;
|
||||
while (ex != null)
|
||||
{
|
||||
Messages.Add("Exception message: " + ex.Message);
|
||||
ex = ex.InnerException;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
// 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.
|
||||
|
||||
namespace Microsoft.AspNetCore.Certificates.Generation
|
||||
{
|
||||
internal enum CertificatePurpose
|
||||
{
|
||||
All,
|
||||
HTTPS
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
// 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.
|
||||
|
||||
#if NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2
|
||||
|
||||
namespace Microsoft.AspNetCore.Certificates.Generation
|
||||
{
|
||||
internal enum EnsureCertificateResult
|
||||
{
|
||||
Succeeded = 1,
|
||||
ValidCertificatePresent,
|
||||
ErrorCreatingTheCertificate,
|
||||
ErrorSavingTheCertificateIntoTheCurrentUserPersonalStore,
|
||||
ErrorExportingTheCertificate,
|
||||
FailedToTrustTheCertificate,
|
||||
UserCancelledTrustStep
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
// 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.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Microsoft.Extensions.Internal
|
||||
{
|
||||
/// <summary>
|
||||
/// Helper related to generic interface definitions and implementing classes.
|
||||
/// </summary>
|
||||
internal static class ClosedGenericMatcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Determine whether <paramref name="queryType"/> is or implements a closed generic <see cref="Type"/>
|
||||
/// created from <paramref name="interfaceType"/>.
|
||||
/// </summary>
|
||||
/// <param name="queryType">The <see cref="Type"/> of interest.</param>
|
||||
/// <param name="interfaceType">The open generic <see cref="Type"/> to match. Usually an interface.</param>
|
||||
/// <returns>
|
||||
/// The closed generic <see cref="Type"/> created from <paramref name="interfaceType"/> that
|
||||
/// <paramref name="queryType"/> is or implements. <c>null</c> if the two <see cref="Type"/>s have no such
|
||||
/// relationship.
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// This method will return <paramref name="queryType"/> if <paramref name="interfaceType"/> is
|
||||
/// <c>typeof(KeyValuePair{,})</c>, and <paramref name="queryType"/> is
|
||||
/// <c>typeof(KeyValuePair{string, object})</c>.
|
||||
/// </remarks>
|
||||
public static Type ExtractGenericInterface(Type queryType, Type interfaceType)
|
||||
{
|
||||
if (queryType == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(queryType));
|
||||
}
|
||||
|
||||
if (interfaceType == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(interfaceType));
|
||||
}
|
||||
|
||||
if (IsGenericInstantiation(queryType, interfaceType))
|
||||
{
|
||||
// queryType matches (i.e. is a closed generic type created from) the open generic type.
|
||||
return queryType;
|
||||
}
|
||||
|
||||
// Otherwise check all interfaces the type implements for a match.
|
||||
// - If multiple different generic instantiations exists, we want the most derived one.
|
||||
// - If that doesn't break the tie, then we sort alphabetically so that it's deterministic.
|
||||
//
|
||||
// We do this by looking at interfaces on the type, and recursing to the base type
|
||||
// if we don't find any matches.
|
||||
return GetGenericInstantiation(queryType, interfaceType);
|
||||
}
|
||||
|
||||
private static bool IsGenericInstantiation(Type candidate, Type interfaceType)
|
||||
{
|
||||
return
|
||||
candidate.GetTypeInfo().IsGenericType &&
|
||||
candidate.GetGenericTypeDefinition() == interfaceType;
|
||||
}
|
||||
|
||||
private static Type GetGenericInstantiation(Type queryType, Type interfaceType)
|
||||
{
|
||||
Type bestMatch = null;
|
||||
var interfaces = queryType.GetInterfaces();
|
||||
foreach (var @interface in interfaces)
|
||||
{
|
||||
if (IsGenericInstantiation(@interface, interfaceType))
|
||||
{
|
||||
if (bestMatch == null)
|
||||
{
|
||||
bestMatch = @interface;
|
||||
}
|
||||
else if (StringComparer.Ordinal.Compare(@interface.FullName, bestMatch.FullName) < 0)
|
||||
{
|
||||
bestMatch = @interface;
|
||||
}
|
||||
else
|
||||
{
|
||||
// There are two matches at this level of the class hierarchy, but @interface is after
|
||||
// bestMatch in the sort order.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bestMatch != null)
|
||||
{
|
||||
return bestMatch;
|
||||
}
|
||||
|
||||
// BaseType will be null for object and interfaces, which means we've reached 'bottom'.
|
||||
var baseType = queryType?.GetTypeInfo().BaseType;
|
||||
if (baseType == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetGenericInstantiation(baseType, interfaceType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,155 @@
|
|||
// 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.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.Extensions.Internal
|
||||
{
|
||||
internal class CopyOnWriteDictionary<TKey, TValue> : IDictionary<TKey, TValue>
|
||||
{
|
||||
private readonly IDictionary<TKey, TValue> _sourceDictionary;
|
||||
private readonly IEqualityComparer<TKey> _comparer;
|
||||
private IDictionary<TKey, TValue> _innerDictionary;
|
||||
|
||||
public CopyOnWriteDictionary(
|
||||
IDictionary<TKey, TValue> sourceDictionary,
|
||||
IEqualityComparer<TKey> comparer)
|
||||
{
|
||||
if (sourceDictionary == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(sourceDictionary));
|
||||
}
|
||||
|
||||
if (comparer == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(comparer));
|
||||
}
|
||||
|
||||
_sourceDictionary = sourceDictionary;
|
||||
_comparer = comparer;
|
||||
}
|
||||
|
||||
private IDictionary<TKey, TValue> ReadDictionary
|
||||
{
|
||||
get
|
||||
{
|
||||
return _innerDictionary ?? _sourceDictionary;
|
||||
}
|
||||
}
|
||||
|
||||
private IDictionary<TKey, TValue> WriteDictionary
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_innerDictionary == null)
|
||||
{
|
||||
_innerDictionary = new Dictionary<TKey, TValue>(_sourceDictionary,
|
||||
_comparer);
|
||||
}
|
||||
|
||||
return _innerDictionary;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual ICollection<TKey> Keys
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadDictionary.Keys;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual ICollection<TValue> Values
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadDictionary.Values;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadDictionary.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual bool IsReadOnly
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual TValue this[TKey key]
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadDictionary[key];
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteDictionary[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual bool ContainsKey(TKey key)
|
||||
{
|
||||
return ReadDictionary.ContainsKey(key);
|
||||
}
|
||||
|
||||
public virtual void Add(TKey key, TValue value)
|
||||
{
|
||||
WriteDictionary.Add(key, value);
|
||||
}
|
||||
|
||||
public virtual bool Remove(TKey key)
|
||||
{
|
||||
return WriteDictionary.Remove(key);
|
||||
}
|
||||
|
||||
public virtual bool TryGetValue(TKey key, out TValue value)
|
||||
{
|
||||
return ReadDictionary.TryGetValue(key, out value);
|
||||
}
|
||||
|
||||
public virtual void Add(KeyValuePair<TKey, TValue> item)
|
||||
{
|
||||
WriteDictionary.Add(item);
|
||||
}
|
||||
|
||||
public virtual void Clear()
|
||||
{
|
||||
WriteDictionary.Clear();
|
||||
}
|
||||
|
||||
public virtual bool Contains(KeyValuePair<TKey, TValue> item)
|
||||
{
|
||||
return ReadDictionary.Contains(item);
|
||||
}
|
||||
|
||||
public virtual void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
|
||||
{
|
||||
ReadDictionary.CopyTo(array, arrayIndex);
|
||||
}
|
||||
|
||||
public bool Remove(KeyValuePair<TKey, TValue> item)
|
||||
{
|
||||
return WriteDictionary.Remove(item);
|
||||
}
|
||||
|
||||
public virtual IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
|
||||
{
|
||||
return ReadDictionary.GetEnumerator();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return GetEnumerator();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
// 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.Collections.Generic;
|
||||
|
||||
namespace Microsoft.Extensions.Internal
|
||||
{
|
||||
internal struct CopyOnWriteDictionaryHolder<TKey, TValue>
|
||||
{
|
||||
private readonly Dictionary<TKey, TValue> _source;
|
||||
private Dictionary<TKey, TValue> _copy;
|
||||
|
||||
public CopyOnWriteDictionaryHolder(Dictionary<TKey, TValue> source)
|
||||
{
|
||||
if (source == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(source));
|
||||
}
|
||||
|
||||
_source = source;
|
||||
_copy = null;
|
||||
}
|
||||
|
||||
public CopyOnWriteDictionaryHolder(CopyOnWriteDictionaryHolder<TKey, TValue> source)
|
||||
{
|
||||
_source = source._copy ?? source._source;
|
||||
_copy = null;
|
||||
}
|
||||
|
||||
public bool HasBeenCopied => _copy != null;
|
||||
|
||||
public Dictionary<TKey, TValue> ReadDictionary
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_copy != null)
|
||||
{
|
||||
return _copy;
|
||||
}
|
||||
else if (_source != null)
|
||||
{
|
||||
return _source;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Default-Constructor case
|
||||
_copy = new Dictionary<TKey, TValue>();
|
||||
return _copy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<TKey, TValue> WriteDictionary
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_copy == null && _source == null)
|
||||
{
|
||||
// Default-Constructor case
|
||||
_copy = new Dictionary<TKey, TValue>();
|
||||
}
|
||||
else if (_copy == null)
|
||||
{
|
||||
_copy = new Dictionary<TKey, TValue>(_source, _source.Comparer);
|
||||
}
|
||||
|
||||
return _copy;
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<TKey, TValue>.KeyCollection Keys
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadDictionary.Keys;
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<TKey, TValue>.ValueCollection Values
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadDictionary.Values;
|
||||
}
|
||||
}
|
||||
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadDictionary.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsReadOnly
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public TValue this[TKey key]
|
||||
{
|
||||
get
|
||||
{
|
||||
return ReadDictionary[key];
|
||||
}
|
||||
set
|
||||
{
|
||||
WriteDictionary[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool ContainsKey(TKey key)
|
||||
{
|
||||
return ReadDictionary.ContainsKey(key);
|
||||
}
|
||||
|
||||
public void Add(TKey key, TValue value)
|
||||
{
|
||||
WriteDictionary.Add(key, value);
|
||||
}
|
||||
|
||||
public bool Remove(TKey key)
|
||||
{
|
||||
return WriteDictionary.Remove(key);
|
||||
}
|
||||
|
||||
public bool TryGetValue(TKey key, out TValue value)
|
||||
{
|
||||
return ReadDictionary.TryGetValue(key, out value);
|
||||
}
|
||||
|
||||
public void Add(KeyValuePair<TKey, TValue> item)
|
||||
{
|
||||
((ICollection<KeyValuePair<TKey, TValue>>)WriteDictionary).Add(item);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
WriteDictionary.Clear();
|
||||
}
|
||||
|
||||
public bool Contains(KeyValuePair<TKey, TValue> item)
|
||||
{
|
||||
return ((ICollection<KeyValuePair<TKey, TValue>>)ReadDictionary).Contains(item);
|
||||
}
|
||||
|
||||
public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
|
||||
{
|
||||
((ICollection<KeyValuePair<TKey, TValue>>)ReadDictionary).CopyTo(array, arrayIndex);
|
||||
}
|
||||
|
||||
public bool Remove(KeyValuePair<TKey, TValue> item)
|
||||
{
|
||||
return ((ICollection<KeyValuePair<TKey, TValue>>)WriteDictionary).Remove(item);
|
||||
}
|
||||
|
||||
public Dictionary<TKey, TValue>.Enumerator GetEnumerator()
|
||||
{
|
||||
return ReadDictionary.GetEnumerator();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
// 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.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace Microsoft.Extensions.Internal
|
||||
{
|
||||
internal struct AwaitableInfo
|
||||
{
|
||||
public Type AwaiterType { get; }
|
||||
public PropertyInfo AwaiterIsCompletedProperty { get; }
|
||||
public MethodInfo AwaiterGetResultMethod { get; }
|
||||
public MethodInfo AwaiterOnCompletedMethod { get; }
|
||||
public MethodInfo AwaiterUnsafeOnCompletedMethod { get; }
|
||||
public Type ResultType { get; }
|
||||
public MethodInfo GetAwaiterMethod { get; }
|
||||
|
||||
public AwaitableInfo(
|
||||
Type awaiterType,
|
||||
PropertyInfo awaiterIsCompletedProperty,
|
||||
MethodInfo awaiterGetResultMethod,
|
||||
MethodInfo awaiterOnCompletedMethod,
|
||||
MethodInfo awaiterUnsafeOnCompletedMethod,
|
||||
Type resultType,
|
||||
MethodInfo getAwaiterMethod)
|
||||
{
|
||||
AwaiterType = awaiterType;
|
||||
AwaiterIsCompletedProperty = awaiterIsCompletedProperty;
|
||||
AwaiterGetResultMethod = awaiterGetResultMethod;
|
||||
AwaiterOnCompletedMethod = awaiterOnCompletedMethod;
|
||||
AwaiterUnsafeOnCompletedMethod = awaiterUnsafeOnCompletedMethod;
|
||||
ResultType = resultType;
|
||||
GetAwaiterMethod = getAwaiterMethod;
|
||||
}
|
||||
|
||||
public static bool IsTypeAwaitable(Type type, out AwaitableInfo awaitableInfo)
|
||||
{
|
||||
// Based on Roslyn code: http://source.roslyn.io/#Microsoft.CodeAnalysis.Workspaces/Shared/Extensions/ISymbolExtensions.cs,db4d48ba694b9347
|
||||
|
||||
// Awaitable must have method matching "object GetAwaiter()"
|
||||
var getAwaiterMethod = type.GetRuntimeMethods().FirstOrDefault(m =>
|
||||
m.Name.Equals("GetAwaiter", StringComparison.OrdinalIgnoreCase)
|
||||
&& m.GetParameters().Length == 0
|
||||
&& m.ReturnType != null);
|
||||
if (getAwaiterMethod == null)
|
||||
{
|
||||
awaitableInfo = default(AwaitableInfo);
|
||||
return false;
|
||||
}
|
||||
|
||||
var awaiterType = getAwaiterMethod.ReturnType;
|
||||
|
||||
// Awaiter must have property matching "bool IsCompleted { get; }"
|
||||
var isCompletedProperty = awaiterType.GetRuntimeProperties().FirstOrDefault(p =>
|
||||
p.Name.Equals("IsCompleted", StringComparison.OrdinalIgnoreCase)
|
||||
&& p.PropertyType == typeof(bool)
|
||||
&& p.GetMethod != null);
|
||||
if (isCompletedProperty == null)
|
||||
{
|
||||
awaitableInfo = default(AwaitableInfo);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Awaiter must implement INotifyCompletion
|
||||
var awaiterInterfaces = awaiterType.GetInterfaces();
|
||||
var implementsINotifyCompletion = awaiterInterfaces.Any(t => t == typeof(INotifyCompletion));
|
||||
if (!implementsINotifyCompletion)
|
||||
{
|
||||
awaitableInfo = default(AwaitableInfo);
|
||||
return false;
|
||||
}
|
||||
|
||||
// INotifyCompletion supplies a method matching "void OnCompleted(Action action)"
|
||||
var iNotifyCompletionMap = awaiterType
|
||||
.GetTypeInfo()
|
||||
.GetRuntimeInterfaceMap(typeof(INotifyCompletion));
|
||||
var onCompletedMethod = iNotifyCompletionMap.InterfaceMethods.Single(m =>
|
||||
m.Name.Equals("OnCompleted", StringComparison.OrdinalIgnoreCase)
|
||||
&& m.ReturnType == typeof(void)
|
||||
&& m.GetParameters().Length == 1
|
||||
&& m.GetParameters()[0].ParameterType == typeof(Action));
|
||||
|
||||
// Awaiter optionally implements ICriticalNotifyCompletion
|
||||
var implementsICriticalNotifyCompletion = awaiterInterfaces.Any(t => t == typeof(ICriticalNotifyCompletion));
|
||||
MethodInfo unsafeOnCompletedMethod;
|
||||
if (implementsICriticalNotifyCompletion)
|
||||
{
|
||||
// ICriticalNotifyCompletion supplies a method matching "void UnsafeOnCompleted(Action action)"
|
||||
var iCriticalNotifyCompletionMap = awaiterType
|
||||
.GetTypeInfo()
|
||||
.GetRuntimeInterfaceMap(typeof(ICriticalNotifyCompletion));
|
||||
unsafeOnCompletedMethod = iCriticalNotifyCompletionMap.InterfaceMethods.Single(m =>
|
||||
m.Name.Equals("UnsafeOnCompleted", StringComparison.OrdinalIgnoreCase)
|
||||
&& m.ReturnType == typeof(void)
|
||||
&& m.GetParameters().Length == 1
|
||||
&& m.GetParameters()[0].ParameterType == typeof(Action));
|
||||
}
|
||||
else
|
||||
{
|
||||
unsafeOnCompletedMethod = null;
|
||||
}
|
||||
|
||||
// Awaiter must have method matching "void GetResult" or "T GetResult()"
|
||||
var getResultMethod = awaiterType.GetRuntimeMethods().FirstOrDefault(m =>
|
||||
m.Name.Equals("GetResult")
|
||||
&& m.GetParameters().Length == 0);
|
||||
if (getResultMethod == null)
|
||||
{
|
||||
awaitableInfo = default(AwaitableInfo);
|
||||
return false;
|
||||
}
|
||||
|
||||
awaitableInfo = new AwaitableInfo(
|
||||
awaiterType,
|
||||
isCompletedProperty,
|
||||
getResultMethod,
|
||||
onCompletedMethod,
|
||||
unsafeOnCompletedMethod,
|
||||
getResultMethod.ReturnType,
|
||||
getAwaiterMethod);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
// 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.Linq.Expressions;
|
||||
|
||||
namespace Microsoft.Extensions.Internal
|
||||
{
|
||||
internal struct CoercedAwaitableInfo
|
||||
{
|
||||
public AwaitableInfo AwaitableInfo { get; }
|
||||
public Expression CoercerExpression { get; }
|
||||
public Type CoercerResultType { get; }
|
||||
public bool RequiresCoercion => CoercerExpression != null;
|
||||
|
||||
public CoercedAwaitableInfo(AwaitableInfo awaitableInfo)
|
||||
{
|
||||
AwaitableInfo = awaitableInfo;
|
||||
CoercerExpression = null;
|
||||
CoercerResultType = null;
|
||||
}
|
||||
|
||||
public CoercedAwaitableInfo(Expression coercerExpression, Type coercerResultType, AwaitableInfo coercedAwaitableInfo)
|
||||
{
|
||||
CoercerExpression = coercerExpression;
|
||||
CoercerResultType = coercerResultType;
|
||||
AwaitableInfo = coercedAwaitableInfo;
|
||||
}
|
||||
|
||||
public static bool IsTypeAwaitable(Type type, out CoercedAwaitableInfo info)
|
||||
{
|
||||
if (AwaitableInfo.IsTypeAwaitable(type, out var directlyAwaitableInfo))
|
||||
{
|
||||
info = new CoercedAwaitableInfo(directlyAwaitableInfo);
|
||||
return true;
|
||||
}
|
||||
|
||||
// It's not directly awaitable, but maybe we can coerce it.
|
||||
// Currently we support coercing FSharpAsync<T>.
|
||||
if (ObjectMethodExecutorFSharpSupport.TryBuildCoercerFromFSharpAsyncToAwaitable(type,
|
||||
out var coercerExpression,
|
||||
out var coercerResultType))
|
||||
{
|
||||
if (AwaitableInfo.IsTypeAwaitable(coercerResultType, out var coercedAwaitableInfo))
|
||||
{
|
||||
info = new CoercedAwaitableInfo(coercerExpression, coercerResultType, coercedAwaitableInfo);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
info = default(CoercedAwaitableInfo);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue