diff --git a/.appveyor.yml b/.appveyor.yml
index ffc91c0d3f..9df1571da9 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -11,7 +11,7 @@ install:
skip_commits:
message: /.*\[auto-updated:.*/
build_script:
- - ps: .\run.ps1 default-build /t:ComputeGraph
+ - ps: .\run.ps1 default-build /t:CheckUniverse
clone_depth: 1
environment:
global:
diff --git a/.gitmodules b/.gitmodules
index 629535348f..864fd779b4 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,192 +1,192 @@
[submodule "modules/Antiforgery"]
path = modules/Antiforgery
url = https://github.com/aspnet/Antiforgery.git
- branch = release/2.1
+ branch = dev
[submodule "modules/AuthSamples"]
path = modules/AuthSamples
url = https://github.com/aspnet/AuthSamples.git
- branch = release/2.1
+ branch = dev
[submodule "modules/AzureIntegration"]
path = modules/AzureIntegration
url = https://github.com/aspnet/AzureIntegration.git
- branch = release/2.1
+ branch = dev
[submodule "modules/BasicMiddleware"]
path = modules/BasicMiddleware
url = https://github.com/aspnet/BasicMiddleware.git
- branch = release/2.1
+ branch = dev
[submodule "modules/BrowserLink"]
path = modules/BrowserLink
url = https://github.com/aspnet/BrowserLink.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Caching"]
path = modules/Caching
url = https://github.com/aspnet/Caching.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Common"]
path = modules/Common
url = https://github.com/aspnet/Common.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Configuration"]
path = modules/Configuration
url = https://github.com/aspnet/Configuration.git
- branch = release/2.1
+ branch = dev
[submodule "modules/CORS"]
path = modules/CORS
url = https://github.com/aspnet/CORS.git
- branch = release/2.1
+ branch = dev
[submodule "modules/DataProtection"]
path = modules/DataProtection
url = https://github.com/aspnet/DataProtection.git
- branch = release/2.1
+ branch = dev
[submodule "modules/DependencyInjection"]
path = modules/DependencyInjection
url = https://github.com/aspnet/DependencyInjection.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Diagnostics"]
path = modules/Diagnostics
url = https://github.com/aspnet/Diagnostics.git
- branch = release/2.1
+ branch = dev
[submodule "modules/DotNetTools"]
path = modules/DotNetTools
url = https://github.com/aspnet/DotNetTools.git
- branch = release/2.1
+ branch = dev
[submodule "modules/EntityFrameworkCore"]
path = modules/EntityFrameworkCore
url = https://github.com/aspnet/EntityFrameworkCore.git
- branch = release/2.1
+ branch = dev
[submodule "modules/EventNotification"]
path = modules/EventNotification
url = https://github.com/aspnet/EventNotification.git
- branch = release/2.1
+ branch = dev
[submodule "modules/FileSystem"]
path = modules/FileSystem
url = https://github.com/aspnet/FileSystem.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Hosting"]
path = modules/Hosting
url = https://github.com/aspnet/Hosting.git
- branch = release/2.1
+ branch = dev
[submodule "modules/HtmlAbstractions"]
path = modules/HtmlAbstractions
url = https://github.com/aspnet/HtmlAbstractions.git
- branch = release/2.1
+ branch = dev
[submodule "modules/HttpAbstractions"]
path = modules/HttpAbstractions
url = https://github.com/aspnet/HttpAbstractions.git
- branch = release/2.1
+ branch = dev
[submodule "modules/HttpClientFactory"]
path = modules/HttpClientFactory
url = https://github.com/aspnet/HttpClientFactory.git
- branch = release/2.1
+ branch = dev
[submodule "modules/HttpSysServer"]
path = modules/HttpSysServer
url = https://github.com/aspnet/HttpSysServer.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Identity"]
path = modules/Identity
url = https://github.com/aspnet/Identity.git
- branch = release/2.1
+ branch = dev
[submodule "modules/IISIntegration"]
path = modules/IISIntegration
url = https://github.com/aspnet/IISIntegration.git
- branch = release/2.1
+ branch = dev
[submodule "modules/JavaScriptServices"]
path = modules/JavaScriptServices
url = https://github.com/aspnet/JavaScriptServices.git
- branch = release/2.1
+ branch = dev
[submodule "modules/JsonPatch"]
path = modules/JsonPatch
url = https://github.com/aspnet/JsonPatch.git
- branch = release/2.1
+ branch = dev
[submodule "modules/KestrelHttpServer"]
path = modules/KestrelHttpServer
url = https://github.com/aspnet/KestrelHttpServer.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Localization"]
path = modules/Localization
url = https://github.com/aspnet/Localization.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Logging"]
path = modules/Logging
url = https://github.com/aspnet/Logging.git
- branch = release/2.1
+ branch = dev
[submodule "modules/MetaPackages"]
path = modules/MetaPackages
url = https://github.com/aspnet/MetaPackages.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Microsoft.Data.Sqlite"]
path = modules/Microsoft.Data.Sqlite
url = https://github.com/aspnet/Microsoft.Data.Sqlite.git
- branch = release/2.1
+ branch = dev
[submodule "modules/MusicStore"]
path = modules/MusicStore
url = https://github.com/aspnet/MusicStore.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Mvc"]
path = modules/Mvc
url = https://github.com/aspnet/Mvc.git
- branch = release/2.1
+ branch = dev
[submodule "modules/MvcPrecompilation"]
path = modules/MvcPrecompilation
url = https://github.com/aspnet/MvcPrecompilation.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Options"]
path = modules/Options
url = https://github.com/aspnet/Options.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Proxy"]
path = modules/Proxy
url = https://github.com/aspnet/Proxy.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Razor"]
path = modules/Razor
url = https://github.com/aspnet/Razor.git
- branch = release/2.1
+ branch = dev
[submodule "modules/ResponseCaching"]
path = modules/ResponseCaching
url = https://github.com/aspnet/ResponseCaching.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Routing"]
path = modules/Routing
url = https://github.com/aspnet/Routing.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Scaffolding"]
path = modules/Scaffolding
url = https://github.com/aspnet/Scaffolding.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Security"]
path = modules/Security
url = https://github.com/aspnet/Security.git
- branch = release/2.1
+ branch = dev
[submodule "modules/ServerTests"]
path = modules/ServerTests
url = https://github.com/aspnet/ServerTests.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Session"]
path = modules/Session
url = https://github.com/aspnet/Session.git
- branch = release/2.1
+ branch = dev
[submodule "modules/SignalR"]
path = modules/SignalR
url = https://github.com/aspnet/SignalR.git
- branch = release/2.1
+ branch = dev
[submodule "modules/StaticFiles"]
path = modules/StaticFiles
url = https://github.com/aspnet/StaticFiles.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Templating"]
path = modules/Templating
url = https://github.com/aspnet/Templating.git
- branch = release/2.1
+ branch = dev
[submodule "modules/Testing"]
path = modules/Testing
url = https://github.com/aspnet/Testing.git
- branch = release/2.1
+ branch = dev
[submodule "modules/WebSockets"]
path = modules/WebSockets
url = https://github.com/aspnet/WebSockets.git
- branch = release/2.1
+ branch = dev
[submodule "modules/WebHooks"]
path = modules/WebHooks
url = https://github.com/aspnet/WebHooks.git
- branch = release/2.1
+ branch = dev
diff --git a/.travis.yml b/.travis.yml
index d83797a701..ffb7a95841 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,4 +17,4 @@ branches:
- dev
- /^(.*\/)?ci-.*$/
script:
- - ./build.sh -t:ComputeGraph
+ - ./build.sh -t:CheckUniverse
diff --git a/NuGet.config b/NuGet.config
index b004e5cc74..e32bddfd51 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -2,6 +2,6 @@
-
+
-
\ No newline at end of file
+
diff --git a/README.md b/README.md
index c14247ba29..c9a3f295c6 100644
--- a/README.md
+++ b/README.md
@@ -15,15 +15,15 @@ All published ASP.NET Core packages can be found on . This feed may include
+Packages can be found on . This feed may include
packages that will not be supported in a officially released build.
Commonly referenced packages:
-[app-metapackage-myget]: https://dotnet.myget.org/feed/aspnetcore-dev/package/nuget/Microsoft.AspNetCore.App
-[app-metapackage-myget-badge]: http://img.shields.io/dotnet.myget/aspnetcore-dev/v/Microsoft.AspNetCore.App.svg?style=flat-square&label=myget
+[app-metapackage-myget]: https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.AspNetCore.App
+[app-metapackage-myget-badge]: http://img.shields.io/dotnet.myget/dotnet-core/v/Microsoft.AspNetCore.App.svg?style=flat-square&label=myget
-[metapackage-myget]: https://dotnet.myget.org/feed/aspnetcore-dev/package/nuget/Microsoft.AspNetCore
-[metapackage-myget-badge]: http://img.shields.io/dotnet.myget/aspnetcore-dev/v/Microsoft.AspNetCore.svg?style=flat-square&label=myget
+[metapackage-myget]: https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.AspNetCore
+[metapackage-myget-badge]: http://img.shields.io/dotnet.myget/dotnet-core/v/Microsoft.AspNetCore.svg?style=flat-square&label=myget
Package | MyGet
:---------------------------------|:---------------------------------------------------------
@@ -58,6 +58,7 @@ Microsoft.AspNetCore | [![][metapackage-myget-badge]][metapackage-m
[osx-x64-tar]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-osx-x64.tar.gz
[debian-x64-deb]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-x64.deb
[redhat-x64-rpm]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-x64.rpm
+[alpine.3.6-x64-tar]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-alpine.3.6-x64.tar.gz
[badge-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-win-x64-version-badge.svg
[win-x64-zip-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-win-x64.zip
@@ -68,6 +69,7 @@ Microsoft.AspNetCore | [![][metapackage-myget-badge]][metapackage-m
[osx-x64-tar-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-osx-x64.tar.gz
[debian-x64-deb-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-x64.deb
[redhat-x64-rpm-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-x64.rpm
+[alpine.3.6-x64-tar-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-alpine.3.6-x64.tar.gz
Platform | Latest (dev branch)
![][badge-master] | release/2.1
![][badge-rel-21]
:---------------------|:----------------------------------------------------------------|:-------------------------------------------------------------------------
@@ -77,6 +79,7 @@ macOS (x64) | [Archive (tar.gz)][osx-x64-tar]
Linux (x64) | [Archive (tar.gz)][linux-x64-tar] | [Archive (tar.gz)][linux-x64-tar-rel-21]
Debian/Ubuntu (x64) | [Installer (deb)][debian-x64-deb] | [Installer (deb)][debian-x64-deb-rel-21]
RedHat/Fedora (x64) | [Installer (rpm)][redhat-x64-rpm] | [Installer (rpm)][redhat-x64-rpm-rel-21]
+Alpine Linux 3.6 (x64)| [Archive (tar.gz)][alpine.3.6-x64-tar] | [Archive (tar.gz)][alpine.3.6-x64-tar-rel-21]
## Building from source
diff --git a/build/AzureIntegration.targets b/build/AzureIntegration.targets
index 7cf8a507fb..8df9536eb7 100644
--- a/build/AzureIntegration.targets
+++ b/build/AzureIntegration.targets
@@ -3,7 +3,7 @@
$(MSBuildThisFileDirectory)..\modules\AzureIntegration\
-
+
AspNetUniverseBuildOffline=true;
diff --git a/build/PackageArchive.targets b/build/PackageArchive.targets
index 5c3f4775de..ed6c1bc52e 100644
--- a/build/PackageArchive.targets
+++ b/build/PackageArchive.targets
@@ -7,9 +7,6 @@
-
-
-
@@ -32,8 +29,9 @@
+ <_FallbackArchiveRestoreSources Include="$(RestoreSources)" />
+ <_FallbackArchiveRestoreSources Include="$(BuildDir)" Condition="Exists($(BuildDir))" />
<_FallbackArchiveRestoreSources Include="$(MetapackageRestoreSource)" Condition="Exists($(MetapackageRestoreSource))" />
- <_FallbackArchiveRestoreSources Include="$(DependencyMirrorPackageDir)" Condition="Exists($(DependencyMirrorPackageDir))" />
-
-
-
-
-
-
-
-
-
- <_DotnetToolPackages Include="$(MetapackageRestoreSource)%(_DotnetToolPackageId.Identity).%(_DotnetToolPackageId.Version).nupkg" />
-
-
-
+ Properties="RestorePackagesPath=$(FallbackStagingDir);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp21PackageVersion);DotNetRestoreSourcePropsPath=$(GeneratedFallbackRestoreSourcesPropsPath);DotNetBuildOffline=true;AspNetUniverseBuildOffline=true" />
-
+
diff --git a/build/Publish.targets b/build/Publish.targets
index fcdbf46a13..4ac2bb7eb2 100644
--- a/build/Publish.targets
+++ b/build/Publish.targets
@@ -3,8 +3,6 @@
$(RepositoryRoot).deps\assets\
$(RepositoryRoot).deps\packages\
- $(RepositoryRoot).deps\mirror\
- $(RepositoryRoot).deps\symbols\
aspnetcore_base_runtime.version
$(IntermediateDir)$(BaseRuntimeVersionFileName)
@@ -18,6 +16,7 @@
CopyToPublishArtifacts;
PublishToAzureFeed;
PublishToTransportFeed;
+ PublishToMyGet;
@@ -69,8 +68,6 @@
-
-
$(BlobBasePath)$(WindowsHostingBundleInstallerFileName)
@@ -126,45 +123,101 @@
- <_Artifact
+ <_PackageArtifactInfo
Include="@(ArtifactInfo)"
ArtifactPath="$(DependencyPackagesDir)%(ArtifactInfo.PackageId).%(ArtifactInfo.Version).nupkg"
Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetPackage'" />
+
+ <_SymbolsPackageArtifactInfo
+ Include="@(ArtifactInfo)"
+ ArtifactPath="$(DependencyPackagesDir)%(ArtifactInfo.PackageId).%(ArtifactInfo.Version).symbols.nupkg"
+ Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetSymbolsPackage'" />
+
+
+
-
+
- <_MissingPackages Include="@(PackageArtifact)" />
- <_MissingPackages Remove="%(PackagesToPublish.PackageId)" />
+ <_MissingPackageArtifact Include="@(PackageArtifact)" />
+ <_MissingPackageArtifact Remove="%(_PackageArtifactInfoWithCategory.PackageId)" />
-
+
+
+
-
+
-
- $(DependencyMirrorDir)%(ExternalDependency.Identity).%(ExternalDependency.Version).nupkg
-
+
+
- <_MissingFiles Include="%(FilesToPublish.Identity)" Condition="!Exists(%(FilesToPublish.Identity))" />
- <_MissingFiles Include="%(PackagesToPublish.ArtifactPath)" Condition="!Exists(%(PackagesToPublish.ArtifactPath))" />
+ <_MissingArtifactFile Include="@(FilesToPublish)" Condition="!Exists(%(FilesToPublish.Identity))" />
+ <_MissingArtifactFile Include="@(NpmPackageToPublish)" Condition="!Exists(%(NpmPackageToPublish.Identity))" />
+ <_MissingArtifactFile Include="@(PackageToPublish)" Condition="!Exists(%(PackageToPublish.Identity))" />
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(PublishMyGetNpmRegistryUrl.Replace("https:", "")):_authToken
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+ Condition="'%(PackageToPublish.Category)' != 'ship'" />
-
-
+ Condition="@(PackageToPublish->Count()) != 0" />
$(RepositoryBuildArguments) /p:Configuration=$(Configuration)
$(RepositoryBuildArguments) /p:IsFinalBuild=$(IsFinalBuild)
$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'
+
+ $(RepositoryRoot)korebuild-lock.txt
+ $(BuildRepositoryRoot)korebuild-lock.txt
+ $(IntermediateDir)$(RepositoryToBuild)-korebuild-lock.txt
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/t:CleanArtifacts /t:Build /p:SkipTests=true $(RepositoryBuildArguments)
$(BuildRepositoryRoot)artifacts
@@ -89,18 +106,23 @@
-
-
-
-
+ WorkingDirectory="$(RepositoryRoot)"
+ IgnoreExitCode="true"
+ ContinueOnError="WarnAndContinue">
+
+
+
+
+
+
+
-
+
-
+
/t:Test /p:NoBuild=$(_NoBuildRepos) $(RepositoryBuildArguments)
@@ -125,10 +147,6 @@
-
-
-
-
+
+
diff --git a/build/SharedFx.props b/build/SharedFx.props
index 2c49353da7..8d5bc77c3d 100644
--- a/build/SharedFx.props
+++ b/build/SharedFx.props
@@ -56,7 +56,8 @@
-
+
+
diff --git a/build/SharedFx.targets b/build/SharedFx.targets
index 16f292ffa4..31a7da0237 100644
--- a/build/SharedFx.targets
+++ b/build/SharedFx.targets
@@ -28,7 +28,11 @@
$(_MetapackageSrcRoot)$(MetapackageName)\
$(_WorkRoot)$(MetapackageName)\
- Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);AspNetUniverseBuildOffline=true
+
+ $(CommonProps);Configuration=$(Configuration)
+ $(CommonProps);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)
+ $(CommonProps);DotNetBuildOffline=true
+ $(CommonProps);AspNetUniverseBuildOffline=true
$(CommonProps);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp21PackageVersion)
$(CommonProps);AppMetapackageVersion=$(PackageVersion)
@@ -119,12 +123,9 @@
:
%3B
-
- win7-x64
- win7-x86
-
Configuration=$(Configuration);RuntimeIdentifier=$(SharedFxRestoreRid)
$(CommonSharedFxProps);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)
+ $(CommonSharedFxProps);DotNetBuildOffline=true
$(CommonSharedFxProps);AspNetUniverseBuildOffline=true
@@ -148,7 +149,7 @@
+ Properties="$(RestoreProps);_Target=Restore;RestoreForce=true" />
@@ -260,6 +261,8 @@
+
+
@@ -268,6 +271,7 @@
+
@@ -396,7 +400,7 @@
SymbolsWorkDir=$(AppSharedFxSymbolsDirectory)
- $(AppSymbolsArguments);SymbolsNuspecIdSuffix=Microsoft.AspNetCore.App.symbols
+ $(AppSymbolsArguments);SymbolsNuspecIdSuffix=Microsoft.AspNetCore.App
$(AppSymbolsArguments);Description=Symbol packages for Microsoft.AspNetCore.App shared framework
SymbolsWorkDir=$(AllSharedFxSymbolsDirectory)
- $(AllSymbolsArguments);SymbolsNuspecIdSuffix=Microsoft.AspNetCore.All.symbols
+ $(AllSymbolsArguments);SymbolsNuspecIdSuffix=Microsoft.AspNetCore.All
$(AllSymbolsArguments);Description=Symbol packages for Microsoft.AspNetCore.All shared framework
@@ -501,6 +505,6 @@
Overwrite="true"/>
-
+
diff --git a/build/Templating.targets b/build/Templating.targets
index 78b7963990..5f2867073d 100644
--- a/build/Templating.targets
+++ b/build/Templating.targets
@@ -2,6 +2,8 @@
$(MSBuildThisFileDirectory)..\modules\Templating\
$(GetArtifactInfoDependsOn);GetTemplateArtifactInfo
+ $(TestDependsOn);TestTemplates
+ false
@@ -43,4 +45,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ <_TestTemplateProjProperties>
+ $(TemplateProjProperties);
+ SkipAspNetCoreRuntimeInstall=true;
+ DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);
+ DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath);
+ NoBuild=true;
+
+
+
+
+
+
diff --git a/build/artifacts.props b/build/artifacts.props
index e3e31b90f0..ccb7d1e204 100644
--- a/build/artifacts.props
+++ b/build/artifacts.props
@@ -8,33 +8,31 @@
false
false
-
- false
false
Dependency
-
-
-
-
+
+
+
+
+
-
+
-
-
+
+
@@ -46,11 +44,11 @@
+
-
-
-
+
+
@@ -73,6 +71,7 @@
+
@@ -147,27 +146,26 @@
-
+
-
-
+
-
-
-
+
+
+
@@ -204,8 +202,10 @@
-
+
+
+
@@ -218,6 +218,8 @@
+
+
@@ -251,7 +253,8 @@
-
+
+
@@ -259,7 +262,7 @@
-
+
@@ -284,6 +287,7 @@
+
@@ -295,10 +299,11 @@
-
+
+
diff --git a/build/dependencies.props b/build/dependencies.props
index caea492467..6aa516ec04 100644
--- a/build/dependencies.props
+++ b/build/dependencies.props
@@ -1,106 +1,90 @@
-
- 4.2.1
- 1.0.5
- 15.7.0-preview-000011-1392069
- 15.7.0-preview-000011-1392069
- 15.7.0-preview-000011-1392069
- 15.7.0-preview-000011-1392069
- 15.7.0-preview-000011-1392069
- 4.5.0-preview1-26216-02
- 2.1.0-preview1-26216-03
- 1.0.0-rc3-003121
- 2.1.0-preview1-26216-03
- 1.1.0
- 1.0.5
- 1.1.2
- 2.0.0
+
+ 4.5.0-preview2-26313-01
+ 2.1.0-preview2-26313-01
+ 2.1.0-preview2-26313-01
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-02
- 1.0.1
- 15.3.0
- 4.5.0-preview1-26216-02
- 2.0.1
- 4.7.0-preview1-4986
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 2.1.0-preview1-26216-03
- 4.5.0-preview1-26216-02
- 0.1.0-preview1-180216-4
- 4.5.0-preview1-26216-02
- 1.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 1.2.0-preview1-26216-02
- 1.2.0-preview1-26216-02
- 1.2.0-preview1-26216-02
- 1.2.0-preview1-26216-02
- 1.2.0-preview1-26216-02
- 1.2.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 0.1.0-preview1-180216-4
- 0.1.0-preview1-180216-4
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.3.2
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 1.6.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.3.0
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 0.1.0-preview1-180216-4
- 0.1.0-preview1-180216-4
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.9.0-preview1-26216-02
- 4.5.0-preview1-26216-02
- 4.5.0-preview1-26216-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.7.0-preview1-4958
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 2.1.0-preview2-26314-02
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 1.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 1.6.0-preview2-26313-01
+ 1.6.0-preview2-26313-01
+ 1.6.0-preview2-26313-01
+ 1.6.0-preview2-26313-01
+ 1.6.0-preview2-26313-01
+ 1.6.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 1.6.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.9.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
+ 4.5.0-preview2-26313-01
@@ -117,21 +101,29 @@
+ 0.9.9
+ 0.10.13
+ 2.4.337
+ 4.2.1
2.1.0-prerelease-02430-04
2.0.0
8.7.0
- 0.10.11
- 2.4.337
- 4.2.1
- 6.1.3
+ 4.2.1
+ 1.0.5
3.1.0
1.10.0
2.1.1
2.2.1
- 5.2.4-preview1
+ 5.2.4
+ 1.7.1
2.3.2
1.1.3
1.1.0-preview
+ 15.6.82
+ 15.6.82
+ 15.6.82
+ 15.6.82
+ 15.6.82
2.6.1
2.6.1
2.6.1
@@ -142,8 +134,17 @@
2.6.1
2.6.1
2.6.1
+ 0.2.0-beta-62606-02
+ 1.0.0-rc3-003121
+ 1.1.0
3.14.2
- 5.2.0-preview2-41113220915
+ 5.2.0
+ 5.2.0
+ 1.0.5
+ 1.1.2
+ 2.0.0
+ 1.0.1
+ 15.6.0
3.0.1
3.0.1
3.0.1
@@ -154,6 +155,9 @@
15.6.161-preview
2.6.1
7.10.6070
+ 15.3.224
+ 2.0.6142705
+ 15.3.224
15.0.26606
10.0.30319
11.0.61030
@@ -167,27 +171,32 @@
15.6.161-preview
7.0.0
1.4.0
- 1.3.7
+ 1.3.8
1.0.1
4.7.49
- 0.9.0-beta2
+ 1.0.0-rc
1.6.1
+ 2.0.1
1.0.1
10.0.1
12.2.1100
- 2.2.0-alpha-002
+ 5.8.0
+ 2.2.0
1.4.0
3.2.0
- 1.1.8
- 1.1.8
- 1.1.8
+ 1.1.10-pre20180223200113
+ 1.1.10-pre20180223200113
+ 1.1.10-pre20180223200113
1.2.4
1.1.92
1.0.0
+ 5.2.0
3.1.1
6.1.7601.17515
+ 4.3.2
3.1.1
4.3.0
+ 4.3.0
9.0.1
2.7.0-beta3-62512-06
2.7.0-beta3-62512-06
@@ -210,6 +219,6 @@
2.3.1
2.3.1
2.3.1
- 2.3.1
+ 2.4.0-beta.1.build3945
diff --git a/build/docker/alpine.Dockerfile b/build/docker/alpine.Dockerfile
new file mode 100644
index 0000000000..e6a28c5f6d
--- /dev/null
+++ b/build/docker/alpine.Dockerfile
@@ -0,0 +1,31 @@
+FROM microsoft/dotnet:2.1-runtime-deps-alpine
+WORKDIR /code/build
+
+RUN apk add --no-cache \
+ bash \
+ wget \
+ git \
+ jq \
+ curl \
+ icu-libs \
+ openssl
+
+# Disable the invariant mode (set in base image)
+ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT false
+ENV LC_ALL en_US.UTF-8
+ENV LANG en_US.UTF-8
+
+# Skip package initilization
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
+
+# Workarounds https://github.com/dotnet/cli/issues/8738
+ENV DOTNET_INSTALL_SKIP_PREREQS=1
+ENV KOREBUILD_SKIP_RUNTIME_INSTALL=1
+
+COPY global.json /tmp/global.json
+RUN DOTNET_SDK_VERSION="$(jq -r '.sdk.version' /tmp/global.json)" \
+ && echo "Installing SDK ${DOTNET_SDK_VERSION}" \
+ && curl -fsSL -o /tmp/dotnet.tar.gz https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$DOTNET_SDK_VERSION/dotnet-sdk-$DOTNET_SDK_VERSION-alpine.3.6-x64.tar.gz \
+ && mkdir -p /usr/share/dotnet \
+ && tar xzf /tmp/dotnet.tar.gz -C /usr/share/dotnet \
+ && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
diff --git a/build/external-dependencies.props b/build/external-dependencies.props
index 84a4eb3d5d..e235eb847f 100644
--- a/build/external-dependencies.props
+++ b/build/external-dependencies.props
@@ -1,366 +1,235 @@
-
+
-
-
false
-
- false
+
+ false
+
+ false
-
-
- https://dotnet.myget.org/F/dotnet-core/api/v3/index.json
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
- KRB2004
- MicrosoftNETCoreApp21PackageVersion
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- KRB2004
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- https://dotnet.myget.org/f/dotnet-corefxlab/api/v3/index.json
-
-
-
-
-
-
-
-
-
-
-
-
- https://dotnet.myget.org/F/roslyn/api/v3/index.json
-
-
-
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisCommonPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisCSharpPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisCSharpFeaturesPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisFeaturesPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisVisualBasicPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisWorkspacesCommonPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisRemoteRazorServiceHubPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftCodeAnalysisRemoteWorkspacesPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftVisualStudioLanguageServicesRazorRemoteClientPackageVersion
-
-
- KRB2004
- VSIX_MicrosoftVisualStudioLanguageServicesPackageVersion
-
-
-
-
- https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json
-
-
-
-
-
-
-
-
-
- https://vside.myget.org/F/vssdk/api/v3/index.json
-
-
-
-
-
-
-
-
-
-
-
-
- https://vside.myget.org/F/vsmac/api/v3/index.json
-
-
-
-
-
-
- https://api.nuget.org/v3/index.json
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- KRB2004
-
-
- KRB2004
-
-
- KRB2004
-
-
- KRB2004
-
-
- KRB2004
-
-
- KRB2004
-
-
- KRB2004
-
-
- KRB2004
-
-
- KRB2004
-
-
- KRB2004
-
-
-
-
-
-
-
- KRB2004
- MicrosoftNETCoreApp10PackageVersion
-
-
-
- KRB2004
- MicrosoftNETCoreApp11PackageVersion
-
-
-
- KRB2004
- MicrosoftNETCoreApp20PackageVersion
-
-
-
-
-
-
-
-
-
-
- KRB2004
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- KRB2004
- NETStandard16PackageVersion
-
-
-
- KRB2004
- NETStandardLibrary20PackageVersion
-
-
-
-
- KRB2004
-
-
-
- KRB2004
- VisualStudio_NewtonsoftJsonPackageVersion
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/repo.props b/build/repo.props
index 0406c41539..462857fb19 100644
--- a/build/repo.props
+++ b/build/repo.props
@@ -3,7 +3,6 @@
true
false
- false
public
@@ -12,10 +11,8 @@
false
$(RepositoryRoot)modules\
- $([MSBuild]::NormalizeDirectory($(ArtifactsDir)))lineups\
$(RepositoryRoot).deps\build\
- $(RepositoryRoot).deps\mirror\
@@ -25,6 +22,7 @@
+
@@ -32,6 +30,7 @@
+
@@ -45,13 +44,18 @@
FeedCredential="$(DotNetAssetRootAccessTokenSuffix)" />
+
+
+ true
true
+
true
+
diff --git a/build/repo.targets b/build/repo.targets
index 12fd349d86..7bc96da045 100644
--- a/build/repo.targets
+++ b/build/repo.targets
@@ -8,42 +8,25 @@
-
- $(IntermediateDir)mirror\
-
- $(IntermediateDir)ext\
$(IntermediateDir)dependencies.g.props
$(IntermediateDir)sources.g.props
- SetTeamCityBuildNumberToVersion;$(PrepareDependsOn);VerifyPackageArtifactConfig;PrepareOutputPaths
+ SetTeamCityBuildNumberToVersion;$(PrepareDependsOn);VerifyPackageArtifactConfig;VerifyExternalDependencyConfig;PrepareOutputPaths
$(CleanDependsOn);CleanArtifacts;CleanUniverseArtifacts
- $(RestoreDependsOn);InstallDotNet;RestoreExternalDependencies
+ $(RestoreDependsOn);InstallDotNet
$(CompileDependsOn);BuildRepositories
$(PackageDependsOn);BuildMetapackages;BuildTemplates;SplitPackages
$(TestDependsOn);_TestRepositories
$(VerifyDependsOn);VerifyCoherentVersions
- $(GetArtifactInfoDependsOn);ResolveRepoInfo
+ $(GetArtifactInfoDependsOn);ResolveRepoInfo;GetLineupPackageInfo
-
-
-
-
-
-
-
+
-
-
-
-
+
-
+
+
+
+ NuGetPackage
+ Internal.AspNetCore.Universe.Lineup
+ $(Version)
+ noship
+ true
+
+
+
+
+
<_LineupPackages Include="@(ExternalDependency)" />
<_LineupPackages Include="%(ArtifactInfo.PackageId)" Version="%(ArtifactInfo.Version)" Condition=" '%(ArtifactInfo.ArtifactType)' == 'NuGetPackage' " />
- <_LineupPackages Include="Microsoft.AspNetCore.All" Version="$(PackageVersion)" />
- <_LineupPackages Include="Microsoft.AspNetCore.App" Version="$(PackageVersion)" />
- <_RestoreSources Include="$(DotNetAdditionalRestoreSources)" Condition="'$(DotNetAdditionalRestoreSources)' != ''" />
<_RestoreSources Include="$(DependencyPackageDir)" Condition="'$(DependencyPackageDir)' != '' AND Exists('$(DependencyPackageDir)')" />
<_RestoreSources Include="$(BuildDir)" />
- <_RestoreSources Include="$(IntermediateExternalPackageDir)" />
- <_RestoreSources Include="$(IntermediateMirrorPackageDir)" />
+ <_RestoreSources Include="$(RestoreSources)" />
@@ -176,13 +167,11 @@
-
- <_MirroredPackageFiles Include="$(IntermediateMirrorPackageDir)*.nupkg" />
@@ -204,6 +193,14 @@
Condition="'%(PackageArtifact.AppMetapackage)' == 'true' AND '%(PackageArtifact.AllMetapackage)' != 'true' " />
+
+
+
+
+
+
diff --git a/build/sources.props b/build/sources.props
new file mode 100644
index 0000000000..2d011505a3
--- /dev/null
+++ b/build/sources.props
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+ $(DotNetAdditionalRestoreSources);
+ $(DotNetRestoreSources);
+
+
+ $(RestoreSources);
+ https://api.nuget.org/v3/index.json;
+
+
+ $(RestoreSources);
+ https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
+ https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
+ https://dotnet.myget.org/F/aspnetcore-master/api/v3/index.json;
+ https://dotnet.myget.org/F/roslyn/api/v3/index.json;
+ https://vside.myget.org/F/vssdk/api/v3/index.json;
+ https://vside.myget.org/F/vsmac/api/v3/index.json;
+ https://www.myget.org/F/xunit/api/v3/index.json;
+ https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json;
+
+
+
diff --git a/build/tasks/AnalyzeBuildGraph.cs b/build/tasks/AnalyzeBuildGraph.cs
index 5a49e5945d..f62afa76ce 100644
--- a/build/tasks/AnalyzeBuildGraph.cs
+++ b/build/tasks/AnalyzeBuildGraph.cs
@@ -100,12 +100,7 @@ namespace RepoTasks
{
dependencyMap[dep.ItemSpec] = versions = new List();
}
- else if (dep.GetMetadata("NoWarn") == null || dep.GetMetadata("NoWarn").IndexOf("KRB" + KoreBuildErrors.MultipleExternalDependencyVersions) < 0)
- {
- Log.LogKoreBuildWarning(
- KoreBuildErrors.MultipleExternalDependencyVersions,
- message: $"Multiple versions of external dependency '{dep.ItemSpec}' are defined. In most cases, there should only be one version of external dependencies.");
- }
+
versions.Add(dep.GetMetadata("Version"));
}
@@ -196,7 +191,7 @@ namespace RepoTasks
};
var packages = artifacts
- .Where(a => a.RepoName.Equals(repoName, StringComparison.OrdinalIgnoreCase))
+ .Where(a => string.Equals(a.RepoName, repoName, StringComparison.OrdinalIgnoreCase))
.ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase);
foreach (var proj in s.Projects)
diff --git a/build/tasks/CopyPackagesToSplitFolders.cs b/build/tasks/CopyPackagesToSplitFolders.cs
index b9ead3f5b6..22f2f24df4 100644
--- a/build/tasks/CopyPackagesToSplitFolders.cs
+++ b/build/tasks/CopyPackagesToSplitFolders.cs
@@ -76,9 +76,6 @@ namespace RepoTasks
case PackageCategory.ShipOob:
destDir = Path.Combine(DestinationFolder, "shipoob");
break;
- case PackageCategory.Mirror:
- destDir = Path.Combine(DestinationFolder, "mirror");
- break;
case PackageCategory.Symbols:
destDir = Path.Combine(DestinationFolder, "symbols");
break;
diff --git a/build/tasks/CreateLzma.cs b/build/tasks/CreateLzma.cs
new file mode 100644
index 0000000000..88366fa886
--- /dev/null
+++ b/build/tasks/CreateLzma.cs
@@ -0,0 +1,44 @@
+// 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.IO;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+using Microsoft.DotNet.Archive;
+
+namespace RepoTasks
+{
+ public class CreateLzma : Task
+ {
+ [Required]
+ public string OutputPath { get; set; }
+
+ [Required]
+ public string[] Sources { get; set; }
+
+ public override bool Execute()
+ {
+ var progress = new ConsoleProgressReport();
+ using (var archive = new IndexedArchive())
+ {
+ foreach (var source in Sources)
+ {
+ if (Directory.Exists(source))
+ {
+ Log.LogMessage(MessageImportance.High, $"Adding directory: {source}");
+ archive.AddDirectory(source, progress);
+ }
+ else
+ {
+ Log.LogMessage(MessageImportance.High, $"Adding file: {source}");
+ archive.AddFile(source, Path.GetFileName(source));
+ }
+ }
+
+ archive.Save(OutputPath, progress);
+ }
+
+ return true;
+ }
+ }
+}
diff --git a/build/tasks/CreateNuGetV3FolderFeed.cs b/build/tasks/CreateNuGetV3FolderFeed.cs
deleted file mode 100644
index 8d76e3f165..0000000000
--- a/build/tasks/CreateNuGetV3FolderFeed.cs
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-using System.IO;
-using System.Security.Cryptography;
-using System.Text;
-using Microsoft.Build.Framework;
-using Microsoft.Build.Utilities;
-using NuGet.Packaging;
-using NuGet.Packaging.Core;
-using NuGet.Versioning;
-
-namespace RepoTasks
-{
- ///
- /// Layouts nuget packages as a V3 feed
- ///
- public class CreateNuGetV3FolderFeed : Task
- {
- [Required]
- public ITaskItem[] Packages { get; set; }
-
- [Required]
- public string DestinationFolder { get; set; }
-
- public bool Overwrite { get; set; }
-
- public override bool Execute()
- {
- Directory.CreateDirectory(DestinationFolder);
-
- foreach (var file in Packages)
- {
- PackageIdentity identity;
- using (var reader = new PackageArchiveReader(file.ItemSpec))
- {
- identity = reader.GetIdentity();
- }
-
- Log.LogMessage(MessageImportance.High, "Adding {0} to feed '{1}'", identity, DestinationFolder);
-
- var packageFolder = Path.Combine(DestinationFolder, identity.Id.ToLowerInvariant(), identity.Version.ToNormalizedString());
- var nuspecFile = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nuspec");
- var nupkgFile = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nupkg");
- var sha512File = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nupkg.sha512");
-
- if (!Overwrite && File.Exists(nuspecFile))
- {
- Log.LogError("File already exists: {0}", nuspecFile);
- continue;
- }
- if (!Overwrite && File.Exists(nupkgFile))
- {
- Log.LogError("File already exists: {0}", nupkgFile);
- continue;
- }
- if (!Overwrite && File.Exists(sha512File))
- {
- Log.LogError("File already exists: {0}", sha512File);
- continue;
- }
-
- Directory.CreateDirectory(packageFolder);
- using (var reader = new PackageArchiveReader(file.ItemSpec))
- using (var nuspec = File.Create(nuspecFile))
- using (var metadata = reader.GetNuspec())
- {
- Log.LogMessage("Creating {0}", nuspecFile);
- metadata.CopyTo(nuspec);
- }
-
- Log.LogMessage("Copying {0}", nupkgFile);
- File.Copy(file.ItemSpec, nupkgFile);
- Log.LogMessage("Creating {0}", sha512File);
- File.WriteAllText(sha512File, GetFileHash(file.ItemSpec));
- }
-
- return !Log.HasLoggedErrors;
- }
-
- private static string GetFileHash(string filePath)
- {
- byte[] hash;
-
- using (var algorithm = new SHA512Managed())
- using (var stream = File.OpenRead(filePath))
- {
- hash = algorithm.ComputeHash(stream);
- }
-
- return Convert.ToBase64String(hash);
- }
- }
-}
diff --git a/build/tasks/PublishToAzureBlob.cs b/build/tasks/PublishToAzureBlob.cs
index 94da58dc8a..86150d0be3 100644
--- a/build/tasks/PublishToAzureBlob.cs
+++ b/build/tasks/PublishToAzureBlob.cs
@@ -2,6 +2,7 @@
// 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.IO;
using System.Linq;
using System.Threading;
@@ -43,6 +44,11 @@ namespace RepoTasks
[Required]
public string ContainerName { get; set; }
+ ///
+ /// The maximum number of parallel pushes.
+ ///
+ public int MaxParallelism { get; set; } = 8;
+
public void Cancel() => _cts.Cancel();
public override bool Execute()
@@ -57,44 +63,82 @@ namespace RepoTasks
var container = client.GetContainerReference(ContainerName);
var ctx = new OperationContext();
+ var tasks = new List();
- foreach (var item in Files)
+ using (var throttler = new SemaphoreSlim(MaxParallelism))
{
- // normalize slashes
- var dest = item.GetMetadata("RelativeBlobPath")
- .Replace('\\', '/')
- .Replace("//", "/");
- var contentType = item.GetMetadata("ContentType");
- var cacheControl = item.GetMetadata("CacheControl");
-
- if (string.IsNullOrEmpty(dest))
+ foreach (var item in Files)
{
- Log.LogError($"Item {item.ItemSpec} is missing required metadata 'RelativeBlobPath'");
- return false;
+ _cts.Token.ThrowIfCancellationRequested();
+ await throttler.WaitAsync( _cts.Token);
+ tasks.Add(
+ Task.Run(async () =>
+ {
+ try
+ {
+ await PushFileAsync(ctx, container, item, _cts.Token);
+ }
+ finally
+ {
+ throttler.Release();
+ }
+ }));
}
- var blob = container.GetBlockBlobReference(dest);
-
- if (!string.IsNullOrEmpty(cacheControl))
- {
- blob.Properties.CacheControl = cacheControl;
- }
-
- if (!string.IsNullOrEmpty(contentType))
- {
- blob.Properties.ContentType = contentType;
- }
-
- Log.LogMessage(MessageImportance.High, $"Publishing {item.ItemSpec} to https://{AccountName}.blob.core.windows.net/{ContainerName}/{dest}");
-
- var accessCondition = bool.TryParse(item.GetMetadata("Overwrite"), out var overwrite) && overwrite
- ? AccessCondition.GenerateEmptyCondition()
- : AccessCondition.GenerateIfNotExistsCondition();
-
- await blob.UploadFromFileAsync(item.ItemSpec, accessCondition, new BlobRequestOptions(), ctx, _cts.Token);
+ await Task.WhenAll(tasks);
}
- return true;
+ return !Log.HasLoggedErrors;
+ }
+
+ private async Task PushFileAsync(OperationContext ctx, CloudBlobContainer container, ITaskItem item, CancellationToken cancellationToken)
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+
+ // normalize slashes
+ var dest = item.GetMetadata("RelativeBlobPath")
+ .Replace('\\', '/')
+ .Replace("//", "/");
+ var contentType = item.GetMetadata("ContentType");
+ var cacheControl = item.GetMetadata("CacheControl");
+
+ if (string.IsNullOrEmpty(dest))
+ {
+ Log.LogError($"Item {item.ItemSpec} is missing required metadata 'RelativeBlobPath'");
+ return;
+ }
+
+ var blob = container.GetBlockBlobReference(dest);
+
+ if (!string.IsNullOrEmpty(cacheControl))
+ {
+ blob.Properties.CacheControl = cacheControl;
+ }
+
+ if (!string.IsNullOrEmpty(contentType))
+ {
+ blob.Properties.ContentType = contentType;
+ }
+
+ Log.LogMessage(MessageImportance.High, $"Beginning push of {item.ItemSpec} to https://{AccountName}.blob.core.windows.net/{ContainerName}/{dest}");
+
+ var accessCondition = bool.TryParse(item.GetMetadata("Overwrite"), out var overwrite) && overwrite
+ ? AccessCondition.GenerateEmptyCondition()
+ : AccessCondition.GenerateIfNotExistsCondition();
+
+ try
+ {
+ await blob.UploadFromFileAsync(item.ItemSpec, accessCondition, new BlobRequestOptions(), ctx, cancellationToken);
+ }
+ catch (Exception ex)
+ {
+ Log.LogError($"Error publishing {item.ItemSpec}: {ex}");
+ return;
+ }
+ finally
+ {
+ Log.LogMessage(MessageImportance.High, $"Done publishing {item.ItemSpec} to https://{AccountName}.blob.core.windows.net/{ContainerName}/{dest}");
+ }
}
}
}
diff --git a/build/tasks/RepoTasks.csproj b/build/tasks/RepoTasks.csproj
index aeff655cbf..fbfd560a7c 100644
--- a/build/tasks/RepoTasks.csproj
+++ b/build/tasks/RepoTasks.csproj
@@ -1,13 +1,14 @@
+
netstandard2.0
- https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json
+
diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks
index e291aa5b66..c91006135b 100644
--- a/build/tasks/RepoTasks.tasks
+++ b/build/tasks/RepoTasks.tasks
@@ -5,23 +5,17 @@
-
-
-
-
-
+
-
-
+
-
diff --git a/build/tasks/Utilities/KoreBuildErrors.cs b/build/tasks/Utilities/KoreBuildErrors.cs
index f21bde3436..8386f9cf7f 100644
--- a/build/tasks/Utilities/KoreBuildErrors.cs
+++ b/build/tasks/Utilities/KoreBuildErrors.cs
@@ -15,7 +15,6 @@ namespace RepoTasks.Utilities
public const int RepoVersionDoesNotMatchProjectVersion = 2001;
public const int RepoPackageVersionDoesNotMatchProjectPackageVersion = 2002;
public const int DuplicatePackageReference = 2003;
- public const int MultipleExternalDependencyVersions = 2004;
// NuGet errors
public const int InvalidNuspecFile = 4001;
diff --git a/build/tasks/Utilities/PackageCategory.cs b/build/tasks/Utilities/PackageCategory.cs
index 78afe9cbce..19a871d3b6 100644
--- a/build/tasks/Utilities/PackageCategory.cs
+++ b/build/tasks/Utilities/PackageCategory.cs
@@ -10,7 +10,6 @@ namespace RepoTasks.Utilities
Shipping,
NoShip,
ShipOob,
- Mirror,
Symbols,
}
}
diff --git a/build/tasks/Utilities/PackageCollection.cs b/build/tasks/Utilities/PackageCollection.cs
index d066360f53..4aa778aa2a 100644
--- a/build/tasks/Utilities/PackageCollection.cs
+++ b/build/tasks/Utilities/PackageCollection.cs
@@ -47,9 +47,6 @@ namespace RepoTasks.Utilities
case "shipoob":
category = PackageCategory.ShipOob;
break;
- case "mirror":
- category = PackageCategory.Mirror;
- break;
default:
category = PackageCategory.Unknown;
break;
diff --git a/build/tools/dotnet-deb-tool-consumer/dotnet-deb-tool-consumer.csproj b/build/tools/dotnet-deb-tool-consumer/dotnet-deb-tool-consumer.csproj
index 659448ee0e..d2fa226fc4 100644
--- a/build/tools/dotnet-deb-tool-consumer/dotnet-deb-tool-consumer.csproj
+++ b/build/tools/dotnet-deb-tool-consumer/dotnet-deb-tool-consumer.csproj
@@ -1,8 +1,9 @@
- netcoreapp1.0
- $(RestoreSources);https://dotnet.myget.org/F/cli-deps/api/v3/index.json
+ netcoreapp2.0
+ $(RestoreSources);https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json
+ true
diff --git a/build/tools/templates/Archive/Archive.csproj b/build/tools/templates/Archive/Archive.csproj
index 5c25bc8c1d..3d3d608b31 100644
--- a/build/tools/templates/Archive/Archive.csproj
+++ b/build/tools/templates/Archive/Archive.csproj
@@ -6,17 +6,7 @@
netcoreapp2.1
false
netcoreapp2.1
- $(DotNetRestoreSources)
- $(RestoreSources);https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
-
- $(RestoreSources);
- https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
- https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
-
-
- $(RestoreSources);
- https://api.nuget.org/v3/index.json;
-
+ $(RestoreSources);$(DotNetRestoreSources);
diff --git a/build/tools/templates/HostingStartup/HostingStartup.csproj b/build/tools/templates/HostingStartup/HostingStartup.csproj
deleted file mode 100644
index dbb96336d5..0000000000
--- a/build/tools/templates/HostingStartup/HostingStartup.csproj
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- netcoreapp2.0
- Exe
-
-
-
-
-
-
-
-
- $(RuntimeFrameworkVersion)
- $(DepsOutputPath)\$(HostingStartupPackageName)\shared\Microsoft.NETCore.App\$(DepsRuntimeFrameworkVersion)\$(HostingStartupPackageName).deps.json
-
-
-
-
-
diff --git a/build/tools/templates/HostingStartup/Program.cs b/build/tools/templates/HostingStartup/Program.cs
deleted file mode 100644
index 8cd3c0026c..0000000000
--- a/build/tools/templates/HostingStartup/Program.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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/build/tools/templates/SharedFx/SharedFx.csproj b/build/tools/templates/SharedFx/SharedFx.csproj
index e9ff3b20dd..24bd3aad7e 100644
--- a/build/tools/templates/SharedFx/SharedFx.csproj
+++ b/build/tools/templates/SharedFx/SharedFx.csproj
@@ -6,17 +6,7 @@
netcoreapp2.1
true
true
- $(DotNetRestoreSources)
-
- $(RestoreSources);
- https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
- https://dotnet.myget.org/F/aspnetcore-master/api/v3/index.json;
- https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
-
-
- $(RestoreSources);
- https://api.nuget.org/v3/index.json;
-
+ $(RestoreSources);$(DotNetRestoreSources);
diff --git a/build/tools/templates/SharedFxSymbols/SharedFrameworkSymbols.nuspec b/build/tools/templates/SharedFxSymbols/SharedFrameworkSymbols.nuspec
index 18c0b0e657..1ba4b6c85d 100644
--- a/build/tools/templates/SharedFxSymbols/SharedFrameworkSymbols.nuspec
+++ b/build/tools/templates/SharedFxSymbols/SharedFrameworkSymbols.nuspec
@@ -14,9 +14,5 @@
true
aspnetcore
-
-
-
-
-
+
diff --git a/dockerbuild.sh b/dockerbuild.sh
new file mode 100755
index 0000000000..da7c76ea9d
--- /dev/null
+++ b/dockerbuild.sh
@@ -0,0 +1,112 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+#
+# variables
+#
+
+RESET="\033[0m"
+RED="\033[0;31m"
+YELLOW="\033[0;33m"
+MAGENTA="\033[0;95m"
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+build_args=()
+docker_args=()
+
+#
+# Functions
+#
+__usage() {
+ echo "Usage: $(basename "${BASH_SOURCE[0]}") [options] [[--] ...]"
+ echo ""
+ echo "Arguments:"
+ echo " image The docker image to use."
+ echo " ... Arguments passed to the command. Variable number of arguments allowed."
+ echo ""
+ echo "Options:"
+ echo " -v, --volume An additional volume mount to add to the build container"
+ echo ""
+ echo "Description:"
+ echo " This will run build.sh inside the dockerfile as defined in build/docker/\$image.Dockerfile."
+
+ if [[ "${1:-}" != '--no-exit' ]]; then
+ exit 2
+ fi
+}
+
+
+__error() {
+ echo -e "${RED}error: $*${RESET}" 1>&2
+}
+
+__warn() {
+ echo -e "${YELLOW}warning: $*${RESET}"
+}
+
+__machine_has() {
+ hash "$1" > /dev/null 2>&1
+ return $?
+}
+
+#
+# main
+#
+
+image="${1:-}"
+shift || True
+
+while [[ $# -gt 0 ]]; do
+ case $1 in
+ -\?|-h|--help)
+ __usage --no-exit
+ exit 0
+ ;;
+ -v|--volume)
+ shift
+ volume_spec="${1:-}"
+ [ -z "$volume_spec" ] && __error "Missing value for parameter --volume" && __usage
+ docker_args[${#docker_args[*]}]="--volume"
+ docker_args[${#docker_args[*]}]="$volume_spec"
+ ;;
+ *)
+ build_args[${#build_args[*]}]="$1"
+ ;;
+ esac
+ shift
+done
+
+if [ -z "$image" ]; then
+ __usage --no-exit
+ __error 'Missing required argument: image'
+ exit 1
+fi
+
+if ! __machine_has docker; then
+ __error 'Missing required command: docker'
+ exit 1
+fi
+
+dockerfile="$DIR/build/docker/$image.Dockerfile"
+tagname="universe-build-$image"
+
+# Workaround for https://github.com/dotnet/cli/issues/8738 and https://github.com/Microsoft/msbuild/issues/3066
+# Run noop target because we need to generate the global.json file so we can install the matching
+# .NET Core SDK inside the Docker container.
+"$DIR/build.sh" /t:Noop
+cp "$DIR/global.json" "$(dirname "$dockerfile")"
+#endworkaround
+
+docker build "$(dirname "$dockerfile")" -f "$dockerfile" --tag $tagname
+
+docker run \
+ --rm \
+ -t \
+ -e CI \
+ -e DOTNET_CLI_TELEMETRY_OPTOUT \
+ -e Configuration \
+ -v "$DIR:/code/build" \
+ ${docker_args[@]+"${docker_args[@]}"} \
+ $tagname \
+ ./build.sh \
+ ${build_args[@]+"${build_args[@]}"}
diff --git a/docs/CrossRepoBreakingChanges.md b/docs/CrossRepoBreakingChanges.md
new file mode 100644
index 0000000000..09299b4b37
--- /dev/null
+++ b/docs/CrossRepoBreakingChanges.md
@@ -0,0 +1,33 @@
+## A pattern for making cross-repo breaking changes
+
+The engineering team has come up with a pattern for making cross-repo breaking changes without destabilizing local \ CI builds using feature branches. I’ll explain it in terms of a breaking change in Configuration that affects Options:
+
+1) Start by making a feature branch in the Configuration repo. A feature branch is any branch that starts with the prefix "feature/" e.g. feature/bring-back-web-config
+
+`git checkout feature/bring-back-web-config`
+
+2) Make your changes in this feature branch and push it to GitHub. You can ordinarily continue using this branch to get your PR reviewed.
+3) TeamCity's individual Project configuration (http://aspnetci/project.html?projectId=Lite&tab=projectOverview) has always built feature branches. We've enabled an additional step to it that pushes packages produced from feature branches to https://dotnet.myget.org/f/aspnetcore-dev.
+Packages produced from feature branches will have a branch name suffix in their release label to distinguish them from our regular builds. For instance, a package produced for the branch pushed earlier might look like '2.1.0-preview2-bring-back-web-config-10012'.
+
+4) In the Options repo, create a working branch like you normally do:
+
+`git checkout prkrishn/react-to-config`
+
+5) Once again in the options repo, edit build/dependencies.props to reference the feature branch package that got produced.
+a) If `build/dependencies.props` already has a reference to Configuration, update the version of the Options package in `build/dependencies.props` to point to the package produced from the feature branch.
+b) If `build/dependencies.props` does not have a reference to the package version of Configuration, i.e. the package is transitively referenced:
+ * Add a new entry in `build/dependencies.props`
+ * And a PackageReference to the feature branch package in your project.
+
+```xml
+// build/dependencies.props
+2.1.0-preview2-bring-back-web-config-10012
+```
+
+5) Now that you reference the package with breaking changes, make your fixup changes to Options.
+6) Get your code reviewed
+7) Check in to dev both sets of changes i.e. the feature branch from Configuration and your reaction changes in Options including changes to build/dependencies.props.
+7) File a tracking task in Options to clean up build/dependencies.props. Build automation should fix up this version for you when it does it weekly update of dependencies.props, but it's good to manually verify that this is fixed up before we branch or create tags.
+
+**tl,dr**: Push feature branches. TeamCity will build packages with release labels derived from branch name. You can edit and check in changes to build/dependencies.props to reference these packages.
diff --git a/docs/FallbackPackageCache.md b/docs/FallbackPackageCache.md
new file mode 100644
index 0000000000..688d48650f
--- /dev/null
+++ b/docs/FallbackPackageCache.md
@@ -0,0 +1,54 @@
+Fallback Package Cache (LZMA)
+=============================
+
+The fallback package cache (commonly called the LZMA) is a set of NuGet packages that are bundled in the .NET Core SDK installers.
+The LZMA is a compressed file format, similar to a .zip.
+On first use or on install, the .NET Core CLI will expand this LZMA file, extracting the packages inside to %DOTNET_INSTALL_DIR%/sdk/NuGetFallbackFolder.
+
+## Requirements
+
+The following requirements are used to determine which packages go into the fallback package cache:
+
+ - A user should be able to restore the following templates and only use packages from the offline cache:
+ - `dotnet new console`
+ - `dotnet new library`
+ - `dotnet new web`
+ - `dotnet new razor`
+ - `dotnet new mvc`
+
+The following packages are NOT included in the offline cache.
+ - Packages required for standalone publishing, aka projects that set a Runtime Identifier during restore
+ - Packages required for F# and VB templates
+ - Packages required for Visual Studio code generation in ASP.NET Core projects
+ - Packages required to restore .NET Framework projects
+ - Packages required to restore test projects, such as xunit, MSTest, NUnit
+
+The result of this typically means including the transitive graph of the following packages:
+
+ - Packages that match bundled runtimes
+ - Microsoft.NETCore.App
+ - Microsoft.AspNetCore.App
+ - Microsoft.AspNetCore.All
+ - Packages that Microsoft.NET.Sdk adds implicitly
+ - Microsoft.NETCore.App
+ - NETStandard.Library
+ - Packages that are a PackageReference/DotNetCliToolReference in basic ASP.NET Core templates. In addition to packages above, this typically includes:
+ - Microsoft.EntityFrameworkCore.Tools{.DotNet}
+ - Microsoft.VisualStudio.Web.CodeGeneration.Design
+ - Microsoft.VisualStudio.Web.BrowserLink
+
+### Example
+
+Given the following parameters:
+ - LatestNETCoreAppTFM = netcoreapp2.1
+ - DefaultRuntimeVersion = 2.1
+ - BundledRuntimeVersion = 2.1.8
+ - BundledAspNetRuntimeVersion = 2.1.7
+ - LatestNETStandardLibraryTFM = netstandard2.0
+ - BundledNETStandardLibraryVersion = 2.0.1
+
+The LZMA should contain
+ - Microsoft.NETCore.App/2.1.0 + netcoreapp2.1 dependencies (Microsoft.NET.Sdk will implicitly reference "2.1", which NuGet to 2.1.0)
+ - Microsoft.NETCore.App/2.1.8 + netcoreapp2.1 dependencies (Matches the runtime in shared/Microsoft.NETCore.App/2.1.8/)
+ - Microsoft.AspNetCore.All/2.1.7 + netcoreapp2.1 dependencies (Matches the runtime in shared/Microsoft.AspNetCore.All/2.1.7/)
+ - NETStandard.Library/2.0.1 + netstandard2.0 dependencies (Microsoft.NET.Sdk will implicitly reference "2.0.1")
diff --git a/korebuild-lock.txt b/korebuild-lock.txt
index e4899f7503..e40ef6651b 100644
--- a/korebuild-lock.txt
+++ b/korebuild-lock.txt
@@ -1,2 +1,2 @@
-version:2.1.0-preview1-1029
-commithash:bb4d0a2b748dcdcc62c5c15427e4c989054ff757
+version:2.1.0-preview2-15742
+commithash:21fbb0f2c3fe4a9216e2d59632b98cfd7d685962
diff --git a/korebuild.json b/korebuild.json
index 678d8bb948..a7d496a8ad 100644
--- a/korebuild.json
+++ b/korebuild.json
@@ -1,4 +1,10 @@
{
- "$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/release/2.1/tools/korebuild.schema.json",
- "channel": "release/2.1"
+ "$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/dev/tools/korebuild.schema.json",
+ "channel": "dev",
+ "toolsets": {
+ "nodejs": {
+ "minVersion": "8.0",
+ "required": true
+ }
+ }
}
diff --git a/modules/Antiforgery b/modules/Antiforgery
index d2cfd09acf..d53db529fc 160000
--- a/modules/Antiforgery
+++ b/modules/Antiforgery
@@ -1 +1 @@
-Subproject commit d2cfd09acf49b13b1fa942e84f35c4062ae9c866
+Subproject commit d53db529fcf8c99feffc3cbed786a091dd17c7fc
diff --git a/modules/AuthSamples b/modules/AuthSamples
index 3212b45dcb..1075daf2d5 160000
--- a/modules/AuthSamples
+++ b/modules/AuthSamples
@@ -1 +1 @@
-Subproject commit 3212b45dcbc9b6338d7fa4f8a9f4f9e946226814
+Subproject commit 1075daf2d5d8387a67b94759d593649584261b25
diff --git a/modules/AzureIntegration b/modules/AzureIntegration
index c5c4ff4b9c..c77d4d8be6 160000
--- a/modules/AzureIntegration
+++ b/modules/AzureIntegration
@@ -1 +1 @@
-Subproject commit c5c4ff4b9c84b6f00c4fa1b819219a5a2cc11c65
+Subproject commit c77d4d8be6130a7082c07847392e14895c06d9cd
diff --git a/modules/BasicMiddleware b/modules/BasicMiddleware
index 39167584eb..2b80c90554 160000
--- a/modules/BasicMiddleware
+++ b/modules/BasicMiddleware
@@ -1 +1 @@
-Subproject commit 39167584eba2164e7be7aefec6d8e4670e51a0a6
+Subproject commit 2b80c905549110c312644400b7eea32119009710
diff --git a/modules/BrowserLink b/modules/BrowserLink
index 2b949cc1ff..59f89af9c0 160000
--- a/modules/BrowserLink
+++ b/modules/BrowserLink
@@ -1 +1 @@
-Subproject commit 2b949cc1ffa4e91b98be2e01a4278f4d70b4e1f5
+Subproject commit 59f89af9c08f69182f06b24e38337a515c7702d0
diff --git a/modules/CORS b/modules/CORS
index 302f687487..7addc9d681 160000
--- a/modules/CORS
+++ b/modules/CORS
@@ -1 +1 @@
-Subproject commit 302f687487f0793af01596e6604ab9f5e9053987
+Subproject commit 7addc9d681c373b8edda6d5cfd0fb52e346bbe3b
diff --git a/modules/Caching b/modules/Caching
index d073ffbccc..12f998d697 160000
--- a/modules/Caching
+++ b/modules/Caching
@@ -1 +1 @@
-Subproject commit d073ffbccc946cd4913d433a9769bf5ad541944b
+Subproject commit 12f998d69703fb0f62b5cb1c123b76d63e0d04f0
diff --git a/modules/Common b/modules/Common
index 589c79b2a0..3a39937e81 160000
--- a/modules/Common
+++ b/modules/Common
@@ -1 +1 @@
-Subproject commit 589c79b2a0efa18ed3368c26f75d3df1c78b857b
+Subproject commit 3a39937e81d6c3e13247a1f399ba81d13e166f8c
diff --git a/modules/Configuration b/modules/Configuration
index 4b03172691..4279ed81aa 160000
--- a/modules/Configuration
+++ b/modules/Configuration
@@ -1 +1 @@
-Subproject commit 4b03172691e41a04f3ca906536a8000582a68964
+Subproject commit 4279ed81aac5ca1393b109f0c0e6bd0396307e5f
diff --git a/modules/DataProtection b/modules/DataProtection
index a6165304b3..8a42c24f46 160000
--- a/modules/DataProtection
+++ b/modules/DataProtection
@@ -1 +1 @@
-Subproject commit a6165304b34db6a788df4d48cea0f649b0d41761
+Subproject commit 8a42c24f46d728b4728e6b20febd0a11c1111df2
diff --git a/modules/DependencyInjection b/modules/DependencyInjection
index b5a440897f..5656e84f56 160000
--- a/modules/DependencyInjection
+++ b/modules/DependencyInjection
@@ -1 +1 @@
-Subproject commit b5a440897f54ce08b78cdf5c23b056ca768cdc55
+Subproject commit 5656e84f56994e1be079889596a30f22b1db8d19
diff --git a/modules/Diagnostics b/modules/Diagnostics
index 1fe383b973..a18c2b69d2 160000
--- a/modules/Diagnostics
+++ b/modules/Diagnostics
@@ -1 +1 @@
-Subproject commit 1fe383b973b5c5cf7e580a46991714327b9b6c80
+Subproject commit a18c2b69d2aa0e29780c4f5e5cd720ab7f57d13f
diff --git a/modules/DotNetTools b/modules/DotNetTools
index a64672d6e9..abd4d62a80 160000
--- a/modules/DotNetTools
+++ b/modules/DotNetTools
@@ -1 +1 @@
-Subproject commit a64672d6e9b1ddcf394b8ae0259a2b1086d2b96c
+Subproject commit abd4d62a80ba53cd94e11838756c63ac5547eb78
diff --git a/modules/EntityFrameworkCore b/modules/EntityFrameworkCore
index 8965f0b91c..b5fae4818c 160000
--- a/modules/EntityFrameworkCore
+++ b/modules/EntityFrameworkCore
@@ -1 +1 @@
-Subproject commit 8965f0b91cf89e36abca8636d58420cbd26c22fd
+Subproject commit b5fae4818cffdfe01e26b6a9e7af6c0630ab5d2f
diff --git a/modules/EventNotification b/modules/EventNotification
index c97c109ff7..75c0f83626 160000
--- a/modules/EventNotification
+++ b/modules/EventNotification
@@ -1 +1 @@
-Subproject commit c97c109ff73a03604147d8d039da2a7dea6503f9
+Subproject commit 75c0f83626f36076930a27737e027f5189d7a821
diff --git a/modules/FileSystem b/modules/FileSystem
index e43b464962..795a4fc627 160000
--- a/modules/FileSystem
+++ b/modules/FileSystem
@@ -1 +1 @@
-Subproject commit e43b4649625d83f03814d47c01562a255cce34ef
+Subproject commit 795a4fc6274d25190839bb5e8d009f8ff7958fea
diff --git a/modules/Hosting b/modules/Hosting
index 14aed686ce..a041b368bb 160000
--- a/modules/Hosting
+++ b/modules/Hosting
@@ -1 +1 @@
-Subproject commit 14aed686ceeb474b67770b25378fbfb3ee086477
+Subproject commit a041b368bb18a00e4c05c6de36928cf0174a6f60
diff --git a/modules/HtmlAbstractions b/modules/HtmlAbstractions
index a7219e0c5c..d5e6c6a81e 160000
--- a/modules/HtmlAbstractions
+++ b/modules/HtmlAbstractions
@@ -1 +1 @@
-Subproject commit a7219e0c5cdc1de5cf6f5871b3f2b89b9d7e5040
+Subproject commit d5e6c6a81e857d798a4375e5524262037f49776e
diff --git a/modules/HttpAbstractions b/modules/HttpAbstractions
index 3e99312192..fbbbb16305 160000
--- a/modules/HttpAbstractions
+++ b/modules/HttpAbstractions
@@ -1 +1 @@
-Subproject commit 3e99312192b9444d16dff4d98885cfa4c8953be6
+Subproject commit fbbbb16305f57025eca71964ac5d7c9f43c42150
diff --git a/modules/HttpClientFactory b/modules/HttpClientFactory
index 3a68c18752..b9bb7a46b9 160000
--- a/modules/HttpClientFactory
+++ b/modules/HttpClientFactory
@@ -1 +1 @@
-Subproject commit 3a68c1875246474a4b73099bdf7370cd4388ff6d
+Subproject commit b9bb7a46b9394ce360669fbcf31d9350adbdc137
diff --git a/modules/HttpSysServer b/modules/HttpSysServer
index c4904acdda..fbc5b64cd8 160000
--- a/modules/HttpSysServer
+++ b/modules/HttpSysServer
@@ -1 +1 @@
-Subproject commit c4904acddadfc69a6da83e17ce771333de02dcab
+Subproject commit fbc5b64cd8fee5e966b51ce0dbb9f32fd524fce4
diff --git a/modules/IISIntegration b/modules/IISIntegration
index 6e0189c312..ca15b2fbf6 160000
--- a/modules/IISIntegration
+++ b/modules/IISIntegration
@@ -1 +1 @@
-Subproject commit 6e0189c312292e1a8350fbd6528914e1b7d0c3b5
+Subproject commit ca15b2fbf67549a700e2ccb6f8de56d7b30e13ea
diff --git a/modules/Identity b/modules/Identity
index 997f3f5068..3919d18c62 160000
--- a/modules/Identity
+++ b/modules/Identity
@@ -1 +1 @@
-Subproject commit 997f3f5068e1be17c9472966339c0ae9fe6bf1ca
+Subproject commit 3919d18c622e7bf515e74caa78fbed42ab2eca4c
diff --git a/modules/JavaScriptServices b/modules/JavaScriptServices
index f35c814fc7..8553647ce8 160000
--- a/modules/JavaScriptServices
+++ b/modules/JavaScriptServices
@@ -1 +1 @@
-Subproject commit f35c814fc76b544b984a7520d79771c5c03a1b27
+Subproject commit 8553647ce85de12d1c14228462554585977f7ca1
diff --git a/modules/JsonPatch b/modules/JsonPatch
index 829db1aae5..1f29add119 160000
--- a/modules/JsonPatch
+++ b/modules/JsonPatch
@@ -1 +1 @@
-Subproject commit 829db1aae540b51ac3b5e369ae8b13863e63ef73
+Subproject commit 1f29add11975cb7858a6845fbf76b6f571099d64
diff --git a/modules/KestrelHttpServer b/modules/KestrelHttpServer
index d78e7ea80d..3584e5f2ab 160000
--- a/modules/KestrelHttpServer
+++ b/modules/KestrelHttpServer
@@ -1 +1 @@
-Subproject commit d78e7ea80d734b6d0b094245e8c7727d670e13da
+Subproject commit 3584e5f2ab226bd9f6a51c0ef507ea3f1daf3c3a
diff --git a/modules/Localization b/modules/Localization
index 1ab0584db2..c6e9b15905 160000
--- a/modules/Localization
+++ b/modules/Localization
@@ -1 +1 @@
-Subproject commit 1ab0584db2a3b07f614880a0410b16cf2329f386
+Subproject commit c6e9b1590561c913710984966d8b9ad41b60377d
diff --git a/modules/Logging b/modules/Logging
index 13a401e701..0e680ad544 160000
--- a/modules/Logging
+++ b/modules/Logging
@@ -1 +1 @@
-Subproject commit 13a401e70145a8751b1709e2e27e8e95338a67ce
+Subproject commit 0e680ad544c1de00c920886c47c576d90f9743a8
diff --git a/modules/MetaPackages b/modules/MetaPackages
index 381f3a7414..ef54dad3a3 160000
--- a/modules/MetaPackages
+++ b/modules/MetaPackages
@@ -1 +1 @@
-Subproject commit 381f3a7414c3c0f1c6d9a2fe30a643d34396bf23
+Subproject commit ef54dad3a39bff434a063849a462507500814755
diff --git a/modules/Microsoft.Data.Sqlite b/modules/Microsoft.Data.Sqlite
index 2b0794eae2..491ac0a80c 160000
--- a/modules/Microsoft.Data.Sqlite
+++ b/modules/Microsoft.Data.Sqlite
@@ -1 +1 @@
-Subproject commit 2b0794eae2e4d6fbf9082cc09829a09e7fbfbece
+Subproject commit 491ac0a80c9c391b2ae56e720908fa8abcd8ee38
diff --git a/modules/MusicStore b/modules/MusicStore
index d7bb4b0c5c..4b5bd5a066 160000
--- a/modules/MusicStore
+++ b/modules/MusicStore
@@ -1 +1 @@
-Subproject commit d7bb4b0c5c0e9f9b89376a6d5464dc745c01bc75
+Subproject commit 4b5bd5a0669c8c816632e7bb8d2ef078e9256ff9
diff --git a/modules/Mvc b/modules/Mvc
index 4921bcf7b4..190424fd59 160000
--- a/modules/Mvc
+++ b/modules/Mvc
@@ -1 +1 @@
-Subproject commit 4921bcf7b4b581e178395993fa501f7dd6aac497
+Subproject commit 190424fd5937cb822dbccf8fcdfcb128c1a05b60
diff --git a/modules/MvcPrecompilation b/modules/MvcPrecompilation
index 176d27af5e..68cef635b5 160000
--- a/modules/MvcPrecompilation
+++ b/modules/MvcPrecompilation
@@ -1 +1 @@
-Subproject commit 176d27af5e92320e29c80fb4b6554dbde1ce750e
+Subproject commit 68cef635b503d62e88a49d9890f048cc11068854
diff --git a/modules/Options b/modules/Options
index fe5b409e31..33ba5e221a 160000
--- a/modules/Options
+++ b/modules/Options
@@ -1 +1 @@
-Subproject commit fe5b409e31522bdd370c47aaa34715349ddb4dca
+Subproject commit 33ba5e221ab482d4a60e361d6e5333628645a438
diff --git a/modules/Proxy b/modules/Proxy
index 2261bd8483..5e307635a6 160000
--- a/modules/Proxy
+++ b/modules/Proxy
@@ -1 +1 @@
-Subproject commit 2261bd8483b554e4cf1c0a8be9208cf6a3f50868
+Subproject commit 5e307635a69f3c8ddf76781967287f27b5693334
diff --git a/modules/Razor b/modules/Razor
index 02200d4c11..0c7269eeb6 160000
--- a/modules/Razor
+++ b/modules/Razor
@@ -1 +1 @@
-Subproject commit 02200d4c11907b094dc5441ac8461acf0e94e538
+Subproject commit 0c7269eeb62b3a2749ff0e2d05b8d442bf3e994e
diff --git a/modules/ResponseCaching b/modules/ResponseCaching
index c749fd0a80..673e7f5500 160000
--- a/modules/ResponseCaching
+++ b/modules/ResponseCaching
@@ -1 +1 @@
-Subproject commit c749fd0a8066a8bb2c5401323592f6076af248ec
+Subproject commit 673e7f550068537193a94f6ce323f9fbe9bf6e71
diff --git a/modules/Routing b/modules/Routing
index c5c10b5ed1..1c114d9151 160000
--- a/modules/Routing
+++ b/modules/Routing
@@ -1 +1 @@
-Subproject commit c5c10b5ed12973eb6d642bf5cad92f9c1e98056f
+Subproject commit 1c114d915166fe02275e397205970ada635ff095
diff --git a/modules/Scaffolding b/modules/Scaffolding
index da503e07d7..804a6e74f4 160000
--- a/modules/Scaffolding
+++ b/modules/Scaffolding
@@ -1 +1 @@
-Subproject commit da503e07d759fd9522694f7f8dafef543730fdb4
+Subproject commit 804a6e74f49e26d8171ab9efefcd8f794da1ea2d
diff --git a/modules/Security b/modules/Security
index 088dc56f3d..bee77ebf91 160000
--- a/modules/Security
+++ b/modules/Security
@@ -1 +1 @@
-Subproject commit 088dc56f3daad861abbdd1ad665a85b99d65e848
+Subproject commit bee77ebf911d477faed36a12bcc7369bf0005e1a
diff --git a/modules/ServerTests b/modules/ServerTests
index 151b58bd77..91160a155a 160000
--- a/modules/ServerTests
+++ b/modules/ServerTests
@@ -1 +1 @@
-Subproject commit 151b58bd77b4771dc5e1a4ab19c5003e795f64d6
+Subproject commit 91160a155ab35a141231c60d010fa7f0d8c0982e
diff --git a/modules/Session b/modules/Session
index 130b3e7e58..c1962bae88 160000
--- a/modules/Session
+++ b/modules/Session
@@ -1 +1 @@
-Subproject commit 130b3e7e5850f2ca67183c982492556fd1ece471
+Subproject commit c1962bae887ce176ce5f7b94f8bacbea9439aae2
diff --git a/modules/SignalR b/modules/SignalR
index 68f58a8dd5..227c6b8133 160000
--- a/modules/SignalR
+++ b/modules/SignalR
@@ -1 +1 @@
-Subproject commit 68f58a8dd52c6e83074191224f6c21509c28d2b3
+Subproject commit 227c6b813399158c45ef5d1b1d42427f3e539d7e
diff --git a/modules/StaticFiles b/modules/StaticFiles
index 8113ef5d86..6886061460 160000
--- a/modules/StaticFiles
+++ b/modules/StaticFiles
@@ -1 +1 @@
-Subproject commit 8113ef5d862ba786b21714d9b4a520499f60081b
+Subproject commit 6886061460e49d993571072e94305ca5357c6666
diff --git a/modules/Templating b/modules/Templating
index e81e124586..5f149cfa9c 160000
--- a/modules/Templating
+++ b/modules/Templating
@@ -1 +1 @@
-Subproject commit e81e124586e8f6257cf155128a159e17d5673189
+Subproject commit 5f149cfa9c1843b5800b9b886462cea2dd261a7c
diff --git a/modules/Testing b/modules/Testing
index 8d548554fa..a01d132f74 160000
--- a/modules/Testing
+++ b/modules/Testing
@@ -1 +1 @@
-Subproject commit 8d548554fafc035a11a57e8190c36faaec0c6914
+Subproject commit a01d132f743a8143ddfca88999da9f36b1f84d05
diff --git a/modules/WebHooks b/modules/WebHooks
index bf5f4e273c..8f08e0c8ec 160000
--- a/modules/WebHooks
+++ b/modules/WebHooks
@@ -1 +1 @@
-Subproject commit bf5f4e273cc1c51e71df2c981667cb0b3b2248f7
+Subproject commit 8f08e0c8ec48cd0891e8e892817147e2bd3dc5b3
diff --git a/modules/WebSockets b/modules/WebSockets
index f173f3f08f..4cf0b5d033 160000
--- a/modules/WebSockets
+++ b/modules/WebSockets
@@ -1 +1 @@
-Subproject commit f173f3f08f45da0f353656cf0dc585fec65d5353
+Subproject commit 4cf0b5d033e445153f8ed6bf40bcd8e7b959fd2d
diff --git a/scripts/GenerateTags.ps1 b/scripts/GenerateTags.ps1
new file mode 100755
index 0000000000..958ab36378
--- /dev/null
+++ b/scripts/GenerateTags.ps1
@@ -0,0 +1,106 @@
+#!/usr/bin/env pwsh
+
+<#
+.SYNOPSIS
+ Generates a tag on this repo and adds a tag for each submodule that corresponds
+ to the value in version.props
+.PARAMETER Push
+ Push the tag to origin
+.PARAMETER WhatIf
+ Dry run
+#>
+[cmdletbinding(PositionalBinding = $false, SupportsShouldProcess = $true)]
+param(
+ [switch]$Push
+)
+
+$ErrorActionPreference = 'Stop'
+Import-Module -Scope Local -Force "$PSScriptRoot/common.psm1"
+Set-StrictMode -Version 1
+
+function New-GitTag {
+ [cmdletbinding(SupportsShouldProcess = $true)]
+ param(
+ [Parameter(Mandatory = $true)]
+ [string]$Repo,
+ [Parameter(Mandatory = $true)]
+ [string]$Tag
+ )
+
+ Push-Location $Repo
+ try {
+ git show-ref --tags --verify "refs/tags/$Tag" -q
+ $existingTag = $?
+
+ if ($existingTag) {
+ Write-Warning "${Repo}: Tag '$Tag' already exists. Skipped adding tag"
+ }
+ else {
+ if ($PSCmdlet.ShouldProcess($Repo, "Tag $Tag")) {
+ Invoke-Block { & git tag -m "v$Tag" $Tag HEAD }
+ Write-Host -f Magenta "${Repo}: added tag '$Tag'"
+ }
+ }
+
+ if ($Push -and $PSCmdlet.ShouldProcess($Repo, "Push tag $Tag to origin")) {
+ Invoke-Block { & git push origin refs/tags/$Tag }
+ }
+ }
+ finally {
+ Pop-Location
+ }
+}
+
+#
+# Gets the package version by invoking KoreBuild on a repo with a custom target that spits out the package version
+#
+function Get-PackageVersion([string]$repoRoot) {
+ $buildScript = if (-not $IsCoreCLR -or $IsWindows) { 'build.ps1' } else { 'build.sh' }
+ $inspectTarget = "/p:CustomAfterKoreBuildTargets=$PSScriptRoot/GetPackageVersion.targets"
+ # Add the /t:Noop target which may be used by the bootstrapper to skip unimportant initialization
+ $output = & "$repoRoot/$buildScript" $inspectTarget /v:m /p:IsFinalBuild=true /t:Noop /t:GetPackageVersion
+ $output | out-string | Write-Verbose
+ if (-not $? -or $LASTEXITCODE -ne 0) {
+ throw "$buildScript failed on $repoRoot. Exit code $LASTEXITCODE"
+ }
+ $packageVersion = $output | where-object { $_ -like '*PackageVersion=*' } | select-object -first 1
+ $packageVersion = $packageVersion -replace 'PackageVersion=',''
+ if ($packageVersion) { $packageVersion = $packageVersion.Trim() }
+ if (-not $packageVersion) {
+ throw "Could not determine final package version for $repoRoot"
+ }
+ return $packageVersion.Trim()
+}
+
+$repoRoot = Resolve-Path "$PSScriptRoot/../"
+
+Write-Warning "Make sure you have run ``git submodule update`` first to pin the submodules to the correct commit"
+if (-not $PSCmdlet.ShouldContinue("Continue?", "This will apply tags to all submodules")) {
+ Write-Host "Exiting"
+ exit 1
+}
+
+$universeTag = Get-PackageVersion $repoRoot
+New-GitTag $repoRoot $universeTag -WhatIf:$WhatIfPreference
+
+Get-Submodules $repoRoot | ForEach-Object {
+ $modPath = $_.path
+ $module = $_.module
+ if (-not (Test-Path (Join-Path $_.path 'version.props'))) {
+ Write-Warning "$module does not have a version.props file. Skipping"
+ return
+ }
+
+ try {
+ $tag = Get-PackageVersion $_.path
+ if ($tag -ne $universeTag) {
+ Write-Warning "${module}: version ($tag) does not match universe ($universeTag)"
+ }
+ }
+ catch {
+ Write-Warning "${module}: Could not automatically determine tag for $modPath. Skipping"
+ return
+ }
+
+ New-GitTag $_.path $tag -WhatIf:$WhatIfPreference
+}
diff --git a/scripts/GetPackageVersion.targets b/scripts/GetPackageVersion.targets
new file mode 100644
index 0000000000..061c114027
--- /dev/null
+++ b/scripts/GetPackageVersion.targets
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/scripts/UpdateDependencies.ps1 b/scripts/UpdateDependencies.ps1
index 02f799614a..4430f93f00 100755
--- a/scripts/UpdateDependencies.ps1
+++ b/scripts/UpdateDependencies.ps1
@@ -6,7 +6,8 @@
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
- $BuildXml
+ $BuildXml,
+ [string[]]$ConfigVars = @()
)
$ErrorActionPreference = 'Stop'
@@ -19,12 +20,12 @@ $depsPath = Resolve-Path "$PSScriptRoot/../build/dependencies.props"
if ($BuildXml -like 'http*') {
$url = $BuildXml
New-Item -Type Directory "$PSScriptRoot/../obj/" -ErrorAction Ignore
- $BuildXml = "$PSScriptRoot/../obj/build.xml"
+ $localXml = "$PSScriptRoot/../obj/build.xml"
Write-Verbose "Downloading from $url to $BuildXml"
- Invoke-WebRequest -OutFile $BuildXml $url
+ Invoke-WebRequest -OutFile $localXml $url
}
-[xml] $remoteDeps = LoadXml $BuildXml
+[xml] $remoteDeps = LoadXml $localXml
$count = 0
$variables = @{}
@@ -36,15 +37,20 @@ foreach ($package in $remoteDeps.SelectNodes('//Package')) {
Write-Verbose "Found {id: $packageId, version: $packageVersion, varName: $varName }"
if ($variables[$varName]) {
- $variables[$varName] += $packageVersion
- } else {
+ if ($variables[$varName].Where( {$_ -eq $packageVersion}, 'First').Count -eq 0) {
+ $variables[$varName] += $packageVersion
+ }
+ }
+ else {
$variables[$varName] = @($packageVersion)
}
}
+$updatedVars = @{}
+
foreach ($varName in ($variables.Keys | sort)) {
$packageVersions = $variables[$varName]
- if ($packageVersions.Length -gt 1){
+ if ($packageVersions.Length -gt 1) {
Write-Warning "Skipped $varName. Multiple version found. { $($packageVersions -join ', ') }."
continue
}
@@ -56,12 +62,33 @@ foreach ($varName in ($variables.Keys | sort)) {
$depVarNode.InnerText = $packageVersion
$count++
Write-Host -f DarkGray " Updating $varName to $packageVersion"
+ $updatedVars[$varName] = $packageVersion
}
}
if ($count -gt 0) {
Write-Host -f Cyan "Updating $count version variables in $depsPath"
SaveXml $dependencies $depsPath
+
+ # Ensure dotnet is installed
+ & "$PSScriptRoot\..\run.ps1" install-tools
+
+ $ProjectPath = "$PSScriptRoot\update-dependencies\update-dependencies.csproj"
+
+ $ConfigVars += "--BuildXml"
+ $ConfigVars += $BuildXml
+
+ $ConfigVars += "--UpdatedVersions"
+ $varString = ""
+ foreach ($updatedVar in $updatedVars.GetEnumerator()) {
+ $varString += "$($updatedVar.Name)=$($updatedVar.Value);"
+ }
+ $ConfigVars += $varString
+
+ # Restore and run the app
+ Write-Host "Invoking App $ProjectPath..."
+ Invoke-Expression "dotnet run -p `"$ProjectPath`" @ConfigVars"
+ if ($LASTEXITCODE -ne 0) { throw "Build failed" }
}
else {
Write-Host -f Green "No changes found"
diff --git a/scripts/UpdateRepos.ps1 b/scripts/UpdateRepos.ps1
index e5fbbf674f..24b921b867 100755
--- a/scripts/UpdateRepos.ps1
+++ b/scripts/UpdateRepos.ps1
@@ -56,11 +56,12 @@ Push-Location $ModuleDirectory
try {
$build_errors = @()
- # Get-Submodules also update --init's them
$submodules = Get-Submodules $RepoRoot
foreach ($submodule in $submodules) {
Push-Location $submodule.path
try {
+ Invoke-Block { & git fetch }
+ Invoke-Block { & git checkout origin/$($submodule.branch) }
$depsFile = Join-Path (Join-Path $($submodule.path) "build") "dependencies.props"
if (!(Test-Path $depsFile)) {
@@ -91,7 +92,7 @@ try {
# Test the submodule
try {
- Invoke-Block { & .\run.ps1 default-build }
+ Invoke-Block { & .\run.ps1 default-build /p:SkipTests=true }
}
catch {
Write-Warning "Error in $($submodule.module): $_"
@@ -109,6 +110,10 @@ try {
}
catch {
Write-Warning "Error in pushing $($submodule.module): $_"
+ $build_errors += @{
+ Repo = $submodule.module
+ Message = $_
+ }
continue
}
}
@@ -130,6 +135,10 @@ try {
}
if ($build_errors.Count -gt 0 ) {
+ Write-Warning "The following repos failed:"
+ foreach ($error in $build_errors) {
+ Write-Warning " - $($error.Repo)"
+ }
throw "Failed to build"
}
}
diff --git a/scripts/UpdateSubmodules.ps1 b/scripts/UpdateSubmodules.ps1
index f5542a6306..11058328f0 100755
--- a/scripts/UpdateSubmodules.ps1
+++ b/scripts/UpdateSubmodules.ps1
@@ -1,4 +1,4 @@
-#!/usr/bin/env pwsh
+#!/usr/bin/env pwsh -c
<#
.SYNOPSIS
@@ -13,6 +13,8 @@
Make changes without executing git-commit
.PARAMETER Force
Specified this to make a commit with any changes
+.PARAMETER IgnoredRepos
+ Repos to not update (likely because they are temporarily broken).
#>
[cmdletbinding(SupportsShouldProcess = $true)]
param(
@@ -20,7 +22,8 @@ param(
[string]$GitAuthorEmail = $null,
[string[]]$GitCommitArgs = @(),
[switch]$NoCommit,
- [switch]$Force
+ [switch]$Force,
+ [string[]]$IgnoredRepos = @()
)
$ErrorActionPreference = 'Stop'
@@ -55,6 +58,13 @@ try {
$submodules = Get-Submodules $RepoRoot -Verbose:$VerbosePreference
foreach ($submodule in $submodules) {
+ $submoduleName = $submodule.module
+ if ($IgnoredRepos.Contains($submoduleName))
+ {
+ Write-Host "Skipping $submoduleName due to IgnoredRepos."
+ continue
+ }
+
$submodulePath = $submodule.path
Write-Host "Updating $submodulePath"
diff --git a/scripts/common.psm1 b/scripts/common.psm1
index d1d493eaf0..87205a92d5 100644
--- a/scripts/common.psm1
+++ b/scripts/common.psm1
@@ -32,27 +32,31 @@ function Get-Submodules {
$repos = $submoduleConfig.Project.ItemGroup.Repository | % { $_.Include }
Get-ChildItem "$RepoRoot/modules/*" -Directory `
- | ? { (-not $Shipping) -or $($repos -contains $($_.Name)) -or $_.Name -eq 'Templating' } `
- | % {
+ | ? { (-not $Shipping) -or $($repos -contains $($_.Name)) -or $_.Name -eq 'Templating' } `
+ | % {
Push-Location $_ | Out-Null
Write-Verbose "Attempting to get submodule info for $_"
if (Test-Path 'version.props') {
[xml] $versionXml = Get-Content 'version.props'
- $versionPrefix = $versionXml.Project.PropertyGroup.VersionPrefix
- } else {
+ $versionPrefix = $versionXml.Project.PropertyGroup.VersionPrefix | select-object -first 1
+ $versionSuffix = $versionXml.Project.PropertyGroup.VersionSuffix | select-object -first 1
+ }
+ else {
$versionPrefix = ''
+ $versionSuffix = ''
}
try {
$data = [PSCustomObject] @{
- path = $_
- module = $_.Name
- commit = $(git rev-parse HEAD)
- newCommit = $null
- changed = $false
- branch = $(git config -f $moduleConfigFile --get submodule.modules/$($_.Name).branch )
+ path = $_
+ module = $_.Name
+ commit = $(git rev-parse HEAD)
+ newCommit = $null
+ changed = $false
+ branch = $(git config -f $moduleConfigFile --get submodule.modules/$($_.Name).branch )
versionPrefix = $versionPrefix
+ versionSuffix = $versionSuffix
}
$submodules += $data
diff --git a/scripts/update-dependencies/Config.cs b/scripts/update-dependencies/Config.cs
new file mode 100644
index 0000000000..ddb590c944
--- /dev/null
+++ b/scripts/update-dependencies/Config.cs
@@ -0,0 +1,26 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+namespace Microsoft.Dotnet.Scripts
+{
+ public class Config
+ {
+ public string UpdatedVersions { get; set; }
+ public string BuildXml { get; set; }
+ public string GithubUsername {get; set;}
+ public string GithubEmail {get; set;}
+ public string GithubToken {get; set;}
+ public string GithubUpstreamOwner {get; set;} = "aspnet";
+ public string GithubProject {get; set;} = "Universe";
+ public string GithubUpstreamBranch {get; set;} = "dev";
+ public string[] GitHubPullRequestNotifications { get; set; } = new string[] { };
+
+ public string[] UpdatedVersionsList
+ {
+ get
+ {
+ return UpdatedVersions.Split(';',System.StringSplitOptions.RemoveEmptyEntries);
+ }
+ }
+ }
+}
diff --git a/scripts/update-dependencies/Program.cs b/scripts/update-dependencies/Program.cs
new file mode 100644
index 0000000000..06ec564689
--- /dev/null
+++ b/scripts/update-dependencies/Program.cs
@@ -0,0 +1,84 @@
+// 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.Diagnostics;
+using System.Linq;
+using System.Net.Http;
+using System.Threading.Tasks;
+using System.Xml;
+using Microsoft.DotNet.VersionTools.Automation;
+using Microsoft.Extensions.Configuration;
+
+namespace Microsoft.Dotnet.Scripts
+{
+ public static class Program
+ {
+ private static readonly Config _config = new Config();
+
+ public static async Task Main(string[] args)
+ {
+ Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
+
+ ParseArgs(args);
+
+ await CreatePullRequest();
+ }
+
+ private static void ParseArgs(string[] args)
+ {
+ var builder = new ConfigurationBuilder().AddCommandLine(args);
+ var configRoot = builder.Build();
+ configRoot.Bind(_config);
+ }
+
+ private static async Task CreatePullRequest()
+ {
+ var gitHubAuth = new GitHubAuth(_config.GithubToken, _config.GithubUsername, _config.GithubEmail);
+ var origin = new GitHubProject(_config.GithubProject, _config.GithubUsername);
+ var upstreamBranch = new GitHubBranch(_config.GithubUpstreamBranch, new GitHubProject(_config.GithubProject, _config.GithubUpstreamOwner));
+
+ var commitMessage = $"Updating external dependencies to '{ await GetOrchestratedBuildId() }'";
+ var body = string.Empty;
+ if (_config.GitHubPullRequestNotifications.Any())
+ {
+ body += PullRequestCreator.NotificationString(_config.GitHubPullRequestNotifications);
+ }
+
+ body += $"New versions:{Environment.NewLine}";
+
+ foreach (var updatedVersion in _config.UpdatedVersionsList)
+ {
+ body += $" {updatedVersion}{Environment.NewLine}";
+ }
+
+ await new PullRequestCreator(gitHubAuth, origin, upstreamBranch)
+ .CreateOrUpdateAsync(commitMessage, commitMessage + $" ({upstreamBranch.Name})", body);
+ }
+
+ private static async Task GetOrchestratedBuildId()
+ {
+ var xmlUrl = _config.BuildXml;
+
+ using (var client = new HttpClient())
+ {
+ var response = await client.GetAsync(xmlUrl);
+ using (var bodyStream = await response.Content.ReadAsStreamAsync())
+ {
+ var xmlDoc = new XmlDocument();
+ xmlDoc.Load(bodyStream);
+ var orcBuilds = xmlDoc.GetElementsByTagName("OrchestratedBuild");
+
+ if (orcBuilds.Count < 1)
+ {
+ throw new ArgumentException($"{xmlUrl} didn't have an 'OrchestratedBuild' element.");
+ }
+
+ var orcBuild = orcBuilds[0];
+
+ return orcBuild.Attributes["BuildId"].Value;
+ }
+ }
+ }
+ }
+}
diff --git a/scripts/update-dependencies/update-dependencies.csproj b/scripts/update-dependencies/update-dependencies.csproj
new file mode 100644
index 0000000000..2887812fbb
--- /dev/null
+++ b/scripts/update-dependencies/update-dependencies.csproj
@@ -0,0 +1,21 @@
+
+
+
+ Exe
+ netcoreapp2.0
+ 7.1
+
+ https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json;
+ https://api.nuget.org/v3/index.json;
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 94f49d1b36..79ca86d0bb 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -2,4 +2,5 @@
+
diff --git a/src/Microsoft.AspNetCore.All/Microsoft.AspNetCore.All.csproj b/src/Microsoft.AspNetCore.All/Microsoft.AspNetCore.All.csproj
index 252ff6be55..6df70d6f22 100644
--- a/src/Microsoft.AspNetCore.All/Microsoft.AspNetCore.All.csproj
+++ b/src/Microsoft.AspNetCore.All/Microsoft.AspNetCore.All.csproj
@@ -3,17 +3,6 @@
- $(DotNetRestoreSources)
-
- $(RestoreSources);
- https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
- https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
-
-
- $(RestoreSources);
- https://api.nuget.org/v3/index.json;
-
-
false
false
netcoreapp2.1
diff --git a/src/Microsoft.AspNetCore.Analyzers/Microsoft.AspNetCore.Analyzers.csproj b/src/Microsoft.AspNetCore.Analyzers/Microsoft.AspNetCore.Analyzers.csproj
index ec46fa5dac..5927d10ad9 100644
--- a/src/Microsoft.AspNetCore.Analyzers/Microsoft.AspNetCore.Analyzers.csproj
+++ b/src/Microsoft.AspNetCore.Analyzers/Microsoft.AspNetCore.Analyzers.csproj
@@ -3,17 +3,6 @@
- $(DotNetRestoreSources)
-
- $(RestoreSources);
- https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
- https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
-
-
- $(RestoreSources);
- https://api.nuget.org/v3/index.json;
-
-
false
false
netstandard2.0
diff --git a/src/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj b/src/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj
index bba0f0f8bc..d87e940d0c 100644
--- a/src/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj
+++ b/src/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj
@@ -3,17 +3,6 @@
- $(DotNetRestoreSources)
-
- $(RestoreSources);
- https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
- https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
-
-
- $(RestoreSources);
- https://api.nuget.org/v3/index.json;
-
-
false
false
netcoreapp2.1
diff --git a/src/Microsoft.AspNetCore.App/build/netcoreapp2.1/Microsoft.AspNetCore.App.props b/src/Microsoft.AspNetCore.App/build/netcoreapp2.1/Microsoft.AspNetCore.App.props
index 42d32389f1..3f8e30b23b 100644
--- a/src/Microsoft.AspNetCore.App/build/netcoreapp2.1/Microsoft.AspNetCore.App.props
+++ b/src/Microsoft.AspNetCore.App/build/netcoreapp2.1/Microsoft.AspNetCore.App.props
@@ -2,4 +2,12 @@
Microsoft.AspNetCore.App
+
+
+
+
+
+
\ No newline at end of file
diff --git a/version.props b/version.props
index 950b5611e7..5fcd456a69 100644
--- a/version.props
+++ b/version.props
@@ -1,10 +1,10 @@
2.1.0
- preview1
+ preview2
0.1.0
- alpha1
+ alpha2
$(VersionPrefix)
@@ -23,7 +23,8 @@
$(ExperimentalVersionPrefix)-$(ExperimentalVersionSuffix)-final
$(ExperimentalVersionSuffix)-$(BuildNumber)
- release/2.1
+
+ master