diff --git a/build/AzureIntegration.targets b/build/AzureIntegration.targets deleted file mode 100644 index 8df9536eb7..0000000000 --- a/build/AzureIntegration.targets +++ /dev/null @@ -1,30 +0,0 @@ - - - $(MSBuildThisFileDirectory)..\modules\AzureIntegration\ - - - - - - AspNetUniverseBuildOffline=true; - RepositoryRoot=$(AzureIntegrationProjectRoot); - DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath); - DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath); - BuildNumber=$(BuildNumber); - Configuration=$(Configuration); - IsFinalBuild=$(IsFinalBuild); - - - - - - - - - - - - - diff --git a/build/SharedFx.targets b/build/SharedFx.targets index d3119fbc21..5bcaee5578 100644 --- a/build/SharedFx.targets +++ b/build/SharedFx.targets @@ -41,6 +41,28 @@ + + + + AspNetUniverseBuildOffline=true; + DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath); + DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath); + BuildNumber=$(BuildNumber); + Configuration=$(Configuration); + IsFinalBuild=$(IsFinalBuild); + + + + + + + + + + + + + diff --git a/build/artifacts.props b/build/artifacts.props index bf170648c2..a903fad96d 100644 --- a/build/artifacts.props +++ b/build/artifacts.props @@ -44,6 +44,7 @@ + diff --git a/build/repo.props b/build/repo.props index 4b5ea56161..5763e9eea3 100644 --- a/build/repo.props +++ b/build/repo.props @@ -17,6 +17,9 @@ $(RepositoryRoot).deps\Signed\Packages\ $(RepositoryRoot)eng\signcheck.exclusions.txt $(RepositoryRoot)src\Shared\ + $(SharedFxRid.Substring($([MSBuild]::Add($(SharedFxRid.LastIndexOf('-')), 1)))) + false + false diff --git a/build/repo.targets b/build/repo.targets index 78d2deaee5..481313975f 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -1,7 +1,6 @@ - @@ -22,7 +21,7 @@ $(CompileDependsOn);BuildProjects;PackSharedSources $(CompileDependsOn);PackProjects;BuildRepositories;BuildSharedFx $(PackageDependsOn);PackProjects - $(PackageDependsOn);CheckExpectedPackagesExist + $(PackageDependsOn);BuildSiteExtension;CheckExpectedPackagesExist $(PackageDependsOn);CodeSign $(TestDependsOn);TestProjects $(TestDependsOn);_TestRepositories @@ -73,7 +72,7 @@ - + $(BuildProperties);MicrosoftNETCoreAppPackageVersion=$(MicrosoftNETCoreAppPackageVersion); diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index f8377e8ebf..229a1c4e2f 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -28,6 +28,7 @@ Later on, this will be checked using this condition: @aspnet/signalr; + Microsoft.AspNetCore.Authentication.Google; diff --git a/src/Razor/Razor.Design/test/IntegrationTests/Microsoft.AspNetCore.Razor.Design.Test.csproj b/src/Razor/Razor.Design/test/IntegrationTests/Microsoft.AspNetCore.Razor.Design.Test.csproj index 60492728e4..45639dc66b 100644 --- a/src/Razor/Razor.Design/test/IntegrationTests/Microsoft.AspNetCore.Razor.Design.Test.csproj +++ b/src/Razor/Razor.Design/test/IntegrationTests/Microsoft.AspNetCore.Razor.Design.Test.csproj @@ -13,12 +13,10 @@ true $(MSBuildProjectDirectory)\obj\BuildVariables.generated.cs - EnsureBuildVariablesGeneratedFile;$(CompileDependsOn) - @@ -43,8 +41,31 @@ - - + + + + + +// 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.Razor.Design.IntegrationTests +{ + internal static partial class BuildVariables + { + static partial void InitializeVariables() + { + _msBuildPath = @"$(MSBuildBinPath)\MSBuild.exe"%3B + } + } +} + + + + + + diff --git a/src/Security/Authentication/Google/src/GoogleDefaults.cs b/src/Security/Authentication/Google/src/GoogleDefaults.cs index 26b3b8f01c..105a801d7b 100644 --- a/src/Security/Authentication/Google/src/GoogleDefaults.cs +++ b/src/Security/Authentication/Google/src/GoogleDefaults.cs @@ -1,6 +1,8 @@ // 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; + namespace Microsoft.AspNetCore.Authentication.Google { /// @@ -17,7 +19,23 @@ namespace Microsoft.AspNetCore.Authentication.Google public static readonly string TokenEndpoint = "https://www.googleapis.com/oauth2/v4/token"; - // https://developers.google.com/+/web/people/ - public static readonly string UserInformationEndpoint = "https://www.googleapis.com/plus/v1/people/me"; + public static readonly string UserInformationEndpoint; + + private const string UseGooglePlusSwitch = "Switch.Microsoft.AspNetCore.Authentication.Google.UsePlus"; + + internal static readonly bool UseGooglePlus; + + static GoogleDefaults() + { + if (AppContext.TryGetSwitch(UseGooglePlusSwitch, out UseGooglePlus) && UseGooglePlus) + { + // https://developers.google.com/+/web/people/ + UserInformationEndpoint = "https://www.googleapis.com/plus/v1/people/me"; + } + else + { + UserInformationEndpoint = "https://www.googleapis.com/oauth2/v2/userinfo"; + } + } } } diff --git a/src/Security/Authentication/Google/src/GoogleOptions.cs b/src/Security/Authentication/Google/src/GoogleOptions.cs index 34028bc52b..03abaeaada 100644 --- a/src/Security/Authentication/Google/src/GoogleOptions.cs +++ b/src/Security/Authentication/Google/src/GoogleOptions.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Security.Claims; -using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.OAuth; using Microsoft.AspNetCore.Http; @@ -27,11 +26,22 @@ namespace Microsoft.AspNetCore.Authentication.Google Scope.Add("email"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); - ClaimActions.MapJsonKey(ClaimTypes.Name, "displayName"); - ClaimActions.MapJsonSubKey(ClaimTypes.GivenName, "name", "givenName"); - ClaimActions.MapJsonSubKey(ClaimTypes.Surname, "name", "familyName"); - ClaimActions.MapJsonKey("urn:google:profile", "url"); - ClaimActions.MapCustomJson(ClaimTypes.Email, GoogleHelper.GetEmail); + if (GoogleDefaults.UseGooglePlus) + { + ClaimActions.MapJsonKey(ClaimTypes.Name, "displayName"); + ClaimActions.MapJsonSubKey(ClaimTypes.GivenName, "name", "givenName"); + ClaimActions.MapJsonSubKey(ClaimTypes.Surname, "name", "familyName"); + ClaimActions.MapJsonKey("urn:google:profile", "url"); + ClaimActions.MapCustomJson(ClaimTypes.Email, GoogleHelper.GetEmail); + } + else + { + ClaimActions.MapJsonKey(ClaimTypes.Name, "name"); + ClaimActions.MapJsonKey(ClaimTypes.GivenName, "given_name"); + ClaimActions.MapJsonKey(ClaimTypes.Surname, "family_name"); + ClaimActions.MapJsonKey("urn:google:profile", "link"); + ClaimActions.MapJsonKey(ClaimTypes.Email, "email"); + } } /// @@ -39,4 +49,4 @@ namespace Microsoft.AspNetCore.Authentication.Google /// public string AccessType { get; set; } } -} \ No newline at end of file +} diff --git a/src/Security/Authentication/test/GoogleTests.cs b/src/Security/Authentication/test/GoogleTests.cs index 511a658ff4..cba74a4bd9 100644 --- a/src/Security/Authentication/test/GoogleTests.cs +++ b/src/Security/Authentication/test/GoogleTests.cs @@ -809,45 +809,7 @@ namespace Microsoft.AspNetCore.Authentication.Google { o.ClaimsIssuer = claimsIssuer; } - o.BackchannelHttpHandler = new TestHttpMessageHandler - { - Sender = req => - { - if (req.RequestUri.AbsoluteUri == "https://www.googleapis.com/oauth2/v4/token") - { - return ReturnJsonResponse(new - { - access_token = "Test Access Token", - expires_in = 3600, - token_type = "Bearer" - }); - } - else if (req.RequestUri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped) == "https://www.googleapis.com/plus/v1/people/me") - { - return ReturnJsonResponse(new - { - id = "Test User ID", - displayName = "Test Name", - name = new - { - familyName = "Test Family Name", - givenName = "Test Given Name" - }, - url = "Profile link", - emails = new[] - { - new - { - value = "Test email", - type = "account" - } - } - }); - } - - throw new NotImplementedException(req.RequestUri.AbsoluteUri); - } - }; + o.BackchannelHttpHandler = CreateBackchannel(); }); var properties = new AuthenticationProperties(); @@ -999,46 +961,7 @@ namespace Microsoft.AspNetCore.Authentication.Google o.ClientId = "Test Id"; o.ClientSecret = "Test Secret"; o.StateDataFormat = stateFormat; - o.BackchannelHttpHandler = new TestHttpMessageHandler - { - Sender = req => - { - if (req.RequestUri.AbsoluteUri == "https://www.googleapis.com/oauth2/v4/token") - { - return ReturnJsonResponse(new - { - access_token = "Test Access Token", - expires_in = 3600, - token_type = "Bearer", - refresh_token = "Test Refresh Token" - }); - } - else if (req.RequestUri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped) == "https://www.googleapis.com/plus/v1/people/me") - { - return ReturnJsonResponse(new - { - id = "Test User ID", - displayName = "Test Name", - name = new - { - familyName = "Test Family Name", - givenName = "Test Given Name" - }, - url = "Profile link", - emails = new[] - { - new - { - value = "Test email", - type = "account" - } - } - }); - } - - throw new NotImplementedException(req.RequestUri.AbsoluteUri); - } - }; + o.BackchannelHttpHandler = CreateBackchannel(); o.Events = new OAuthEvents { OnCreatingTicket = context => @@ -1079,46 +1002,7 @@ namespace Microsoft.AspNetCore.Authentication.Google o.ClientId = "Test Id"; o.ClientSecret = "Test Secret"; o.StateDataFormat = stateFormat; - o.BackchannelHttpHandler = new TestHttpMessageHandler - { - Sender = req => - { - if (req.RequestUri.AbsoluteUri == "https://www.googleapis.com/oauth2/v4/token") - { - return ReturnJsonResponse(new - { - access_token = "Test Access Token", - expires_in = 3600, - token_type = "Bearer", - refresh_token = "Test Refresh Token" - }); - } - else if (req.RequestUri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped) == "https://www.googleapis.com/plus/v1/people/me") - { - return ReturnJsonResponse(new - { - id = "Test User ID", - displayName = "Test Name", - name = new - { - familyName = "Test Family Name", - givenName = "Test Given Name" - }, - url = "Profile link", - emails = new[] - { - new - { - value = "Test email", - type = "account" - } - } - }); - } - - throw new NotImplementedException(req.RequestUri.AbsoluteUri); - } - }; + o.BackchannelHttpHandler = CreateBackchannel(); o.Events = new OAuthEvents { OnTicketReceived = context => @@ -1169,46 +1053,7 @@ namespace Microsoft.AspNetCore.Authentication.Google return Task.FromResult(0); } }; - o.BackchannelHttpHandler = new TestHttpMessageHandler - { - Sender = req => - { - if (req.RequestUri.AbsoluteUri == "https://www.googleapis.com/oauth2/v4/token") - { - return ReturnJsonResponse(new - { - access_token = "Test Access Token", - expires_in = 3600, - token_type = "Bearer", - refresh_token = "Test Refresh Token" - }); - } - else if (req.RequestUri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped) == "https://www.googleapis.com/plus/v1/people/me") - { - return ReturnJsonResponse(new - { - id = "Test User ID", - displayName = "Test Name", - name = new - { - familyName = "Test Family Name", - givenName = "Test Given Name" - }, - url = "Profile link", - emails = new[] - { - new - { - value = "Test email", - type = "account" - } - } - }); - } - - throw new NotImplementedException(req.RequestUri.AbsoluteUri); - } - }; + o.BackchannelHttpHandler = CreateBackchannel(); }); var properties = new AuthenticationProperties(); @@ -1439,29 +1284,20 @@ namespace Microsoft.AspNetCore.Authentication.Google { access_token = "Test Access Token", expires_in = 3600, - token_type = "Bearer" + token_type = "Bearer", + refresh_token = "Test Refresh Token" }); } - else if (req.RequestUri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped) == "https://www.googleapis.com/plus/v1/people/me") + else if (req.RequestUri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped) == "https://www.googleapis.com/oauth2/v2/userinfo") { return ReturnJsonResponse(new { id = "Test User ID", - displayName = "Test Name", - name = new - { - familyName = "Test Family Name", - givenName = "Test Given Name" - }, - url = "Profile link", - emails = new[] - { - new - { - value = "Test email", - type = "account" - } - } + name = "Test Name", + given_name = "Test Given Name", + family_name = "Test Family Name", + link = "Profile link", + email = "Test email", }); } diff --git a/src/Security/Security.sln b/src/Security/Security.sln index b8aa6968a4..3d36597db9 100644 --- a/src/Security/Security.sln +++ b/src/Security/Security.sln @@ -96,12 +96,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Diagno EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.StaticFiles", "..\Middleware\StaticFiles\src\Microsoft.AspNetCore.StaticFiles.csproj", "{6FFBD7CD-2B7D-4EC9-8D18-54E53F852B04}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IISIntegration", "..\Servers\IIS\IISIntegration\src\Microsoft.AspNetCore.Server.IISIntegration.csproj", "{43AF597A-FCB8-41A5-8279-345FEE9A61AD}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.Kestrel", "..\Servers\Kestrel\Kestrel\src\Microsoft.AspNetCore.Server.Kestrel.csproj", "{707CBFB4-4D35-479E-9BAF-39B4DA9782DE}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.Kestrel.Https", "..\Servers\Kestrel\Https\src\Microsoft.AspNetCore.Server.Kestrel.Https.csproj", "{AFE880E8-2E9E-46FD-BE87-DFC8192E7B2D}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IISIntegration", "..\Servers\IIS\IISIntegration\src\Microsoft.AspNetCore.Server.IISIntegration.csproj", "{81D0E81F-4711-4C7B-BBD4-E168102D0D7D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -236,10 +236,6 @@ Global {6FFBD7CD-2B7D-4EC9-8D18-54E53F852B04}.Debug|Any CPU.Build.0 = Debug|Any CPU {6FFBD7CD-2B7D-4EC9-8D18-54E53F852B04}.Release|Any CPU.ActiveCfg = Release|Any CPU {6FFBD7CD-2B7D-4EC9-8D18-54E53F852B04}.Release|Any CPU.Build.0 = Release|Any CPU - {43AF597A-FCB8-41A5-8279-345FEE9A61AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {43AF597A-FCB8-41A5-8279-345FEE9A61AD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {43AF597A-FCB8-41A5-8279-345FEE9A61AD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {43AF597A-FCB8-41A5-8279-345FEE9A61AD}.Release|Any CPU.Build.0 = Release|Any CPU {707CBFB4-4D35-479E-9BAF-39B4DA9782DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {707CBFB4-4D35-479E-9BAF-39B4DA9782DE}.Debug|Any CPU.Build.0 = Debug|Any CPU {707CBFB4-4D35-479E-9BAF-39B4DA9782DE}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -248,6 +244,10 @@ Global {AFE880E8-2E9E-46FD-BE87-DFC8192E7B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU {AFE880E8-2E9E-46FD-BE87-DFC8192E7B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU {AFE880E8-2E9E-46FD-BE87-DFC8192E7B2D}.Release|Any CPU.Build.0 = Release|Any CPU + {81D0E81F-4711-4C7B-BBD4-E168102D0D7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {81D0E81F-4711-4C7B-BBD4-E168102D0D7D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {81D0E81F-4711-4C7B-BBD4-E168102D0D7D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {81D0E81F-4711-4C7B-BBD4-E168102D0D7D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -295,9 +295,9 @@ Global {B6CA96E4-674A-4616-9A38-DED07BE458E1} = {A3766414-EB5C-40F7-B031-121804ED5D0A} {54CBBAED-36D5-4855-BB4E-D1AE3523AA23} = {A3766414-EB5C-40F7-B031-121804ED5D0A} {6FFBD7CD-2B7D-4EC9-8D18-54E53F852B04} = {A3766414-EB5C-40F7-B031-121804ED5D0A} - {43AF597A-FCB8-41A5-8279-345FEE9A61AD} = {A3766414-EB5C-40F7-B031-121804ED5D0A} {707CBFB4-4D35-479E-9BAF-39B4DA9782DE} = {A3766414-EB5C-40F7-B031-121804ED5D0A} {AFE880E8-2E9E-46FD-BE87-DFC8192E7B2D} = {A3766414-EB5C-40F7-B031-121804ED5D0A} + {81D0E81F-4711-4C7B-BBD4-E168102D0D7D} = {A3766414-EB5C-40F7-B031-121804ED5D0A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {ABF8089E-43D0-4010-84A7-7A9DCFE49357} diff --git a/src/SiteExtensions/LoggingBranch/Directory.Build.targets b/src/SiteExtensions/LoggingBranch/Directory.Build.targets new file mode 100644 index 0000000000..df33ae31f1 --- /dev/null +++ b/src/SiteExtensions/LoggingBranch/Directory.Build.targets @@ -0,0 +1,33 @@ + + + + + + + + + false + + false + + false + + true + + false + + false + false + + + + + + NuGetPackage + $(PackageId) + $(PackageVersion) + + + + + diff --git a/src/SiteExtensions/LoggingBranch/LoggingBranch.csproj b/src/SiteExtensions/LoggingBranch/LoggingBranch.csproj new file mode 100644 index 0000000000..0fae8e658a --- /dev/null +++ b/src/SiteExtensions/LoggingBranch/LoggingBranch.csproj @@ -0,0 +1,33 @@ + + + + $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion) + ASP.NET Core Extensions + This extension enables additional functionality for ASP.NET Core on Azure WebSites, such as enabling Azure logging. + net461 + false + aspnet;logging;aspnetcore;AzureSiteExtension;keyvault;configuration;dataprotection + content + Microsoft.AspNetCore.AzureAppServices.SiteExtension.$(TrimmedVersion) + $(PackageVersion) + $(MicrosoftNETCoreApp21PackageVersion) + net461 + false + AzureSiteExtension + true + false + false + false + content + true + + + + + + + + + + + diff --git a/src/SiteExtensions/Sdk/HostingStartup/HostingStartup.csproj b/src/SiteExtensions/Sdk/HostingStartup/HostingStartup.csproj new file mode 100644 index 0000000000..59cdf76e60 --- /dev/null +++ b/src/SiteExtensions/Sdk/HostingStartup/HostingStartup.csproj @@ -0,0 +1,13 @@ + + + + netcoreapp2.1 + Exe + + + + + + + + diff --git a/src/SiteExtensions/Sdk/HostingStartup/Program.cs b/src/SiteExtensions/Sdk/HostingStartup/Program.cs new file mode 100644 index 0000000000..8cd3c0026c --- /dev/null +++ b/src/SiteExtensions/Sdk/HostingStartup/Program.cs @@ -0,0 +1,7 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +public class Program +{ + public static void Main() { } +} \ No newline at end of file diff --git a/src/SiteExtensions/Sdk/SiteExtension.targets b/src/SiteExtensions/Sdk/SiteExtension.targets new file mode 100644 index 0000000000..6e941d74ac --- /dev/null +++ b/src/SiteExtensions/Sdk/SiteExtension.targets @@ -0,0 +1,86 @@ + + + + + + + <_TemplatesDirectory>$(MSBuildThisFileDirectory)..\content\ + <_DepsOutputDirectory>$(RepositoryRoot).w\se\ + <_WorkingDirectory>$(_DepsOutputDirectory)\depswork + <_BasePackagePath>content\additionaldeps\ + <_RuntimeStoreManifestFile>$(_DepsOutputDirectory)\rs.csproj + <_RuntimeStoreOutput>$(_DepsOutputDirectory)\rs\ + + + + + + + + + ]]> + + + + + <_TemplateFiles Include="$(MSBuildThisFileDirectory)\HostingStartup\*.cs*" /> + <_HostingStartupPackageReference + Include="%(HostingStartupPackageReference.Identity)" + Source="%(HostingStartupPackageReference.Source)" + Version="%(HostingStartupPackageReference.Version)" + WorkingDirectory="$(_DepsOutputDirectory)%(HostingStartupPackageReference.Identity)" + Project="$(_DepsOutputDirectory)%(HostingStartupPackageReference.Identity)\HostingStartup.csproj" + DepsFile="$(_DepsOutputDirectory)%(HostingStartupPackageReference.Identity)\p\HostingStartup.deps.json" + TrimmedDepsFile="$(_DepsOutputDirectory)%(HostingStartupPackageReference.Identity)\%(HostingStartupPackageReference.Identity).deps.json" + PackagePath="$(_BasePackagePath)%(HostingStartupPackageReference.Identity)\shared\Microsoft.AspNetCore.App\$(MicrosoftAspNetCoreAppPackageVersion)\" + /> + + + + + + + + <_CommonProperties> + AspNetUniverseBuildOffline=true; + DotNetRestoreSourcePropsPath=$(DotNetRestoreSourcePropsPath); + DotNetPackageVersionPropsPath=$(DotNetPackageVersionPropsPath); + BuildNumber=$(BuildNumber); + Configuration=$(Configuration); + IsFinalBuild=$(IsFinalBuild); + MicrosoftAspNetCoreAppPackageVersion=$(MicrosoftAspNetCoreAppPackageVersion); + RuntimeFrameworkVersion=$(HostingStartupRuntimeFrameworkVersion); + + + + + + + + + + + + + + + + <_RuntimeStoreFiles Include="$(_RuntimeStoreOutput)\%(HostingStartupRuntimeStoreTargets.Runtime)\**\*.dll" /> + + + + + + + +