From 8f6f56036014548c692fcab04efabba100dce27f Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Sat, 6 Oct 2018 01:27:24 +0000 Subject: [PATCH 01/20] Updating submodule(s) EntityFrameworkCore => 92b902d81c56ad2235c70a5d92f2d7523c4e01a3 [auto-updated: submodules] --- modules/EntityFrameworkCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/EntityFrameworkCore b/modules/EntityFrameworkCore index 2f8ad9f7e4..92b902d81c 160000 --- a/modules/EntityFrameworkCore +++ b/modules/EntityFrameworkCore @@ -1 +1 @@ -Subproject commit 2f8ad9f7e49d83abad71f1b2229acc5a446265dc +Subproject commit 92b902d81c56ad2235c70a5d92f2d7523c4e01a3 From 8294f94e3779534c9417a075b88fc902b5437c44 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Fri, 5 Oct 2018 19:58:32 -0700 Subject: [PATCH 02/20] Updating submodule(s) Routing => af47b27f0d1ae41e11965ddd7a76b67dc78091ec [auto-updated: submodules] --- modules/Routing | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/Routing b/modules/Routing index 3227de8c0b..af47b27f0d 160000 --- a/modules/Routing +++ b/modules/Routing @@ -1 +1 @@ -Subproject commit 3227de8c0bfa7f60a03bde04163ba0f155b2651a +Subproject commit af47b27f0d1ae41e11965ddd7a76b67dc78091ec From 7f9f1a7c3990d8e5d4194b38e1b5a8f907a71799 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Sat, 6 Oct 2018 04:19:59 +0000 Subject: [PATCH 03/20] Updating submodule(s) Mvc => 384b814349ff4bcfce36b4e02ad29874e5462eca Routing => 9db2833fc207cea14e379255c865305d66441485 [auto-updated: submodules] --- modules/Mvc | 2 +- modules/Routing | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/Mvc b/modules/Mvc index 5bddd226a3..384b814349 160000 --- a/modules/Mvc +++ b/modules/Mvc @@ -1 +1 @@ -Subproject commit 5bddd226a3fde72845a2e2f32dd81172e13d5c9c +Subproject commit 384b814349ff4bcfce36b4e02ad29874e5462eca diff --git a/modules/Routing b/modules/Routing index af47b27f0d..9db2833fc2 160000 --- a/modules/Routing +++ b/modules/Routing @@ -1 +1 @@ -Subproject commit af47b27f0d1ae41e11965ddd7a76b67dc78091ec +Subproject commit 9db2833fc207cea14e379255c865305d66441485 From 2b314394281d84e88c355c1575fadd302de35118 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Fri, 5 Oct 2018 22:58:15 -0700 Subject: [PATCH 04/20] Updating submodule(s) Mvc => 67a1f2dda9bcb5795033b0c0ce775d931627fe17 Routing => ce9ace84fd8a4bc9092dd7cb5738296f4dfc6cef [auto-updated: submodules] --- modules/Mvc | 2 +- modules/Routing | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/Mvc b/modules/Mvc index 384b814349..67a1f2dda9 160000 --- a/modules/Mvc +++ b/modules/Mvc @@ -1 +1 @@ -Subproject commit 384b814349ff4bcfce36b4e02ad29874e5462eca +Subproject commit 67a1f2dda9bcb5795033b0c0ce775d931627fe17 diff --git a/modules/Routing b/modules/Routing index 9db2833fc2..ce9ace84fd 160000 --- a/modules/Routing +++ b/modules/Routing @@ -1 +1 @@ -Subproject commit 9db2833fc207cea14e379255c865305d66441485 +Subproject commit ce9ace84fd8a4bc9092dd7cb5738296f4dfc6cef From b2cfe64b4f6e6ea05a2a01b527be537b0407bb24 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Sat, 6 Oct 2018 04:07:46 -0700 Subject: [PATCH 05/20] Updating submodule(s) Logging => c390b8504d71a5db1b2737b0ea0ef146bdfda0f2 [auto-updated: submodules] --- modules/Logging | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/Logging b/modules/Logging index 2ff997f71a..c390b8504d 160000 --- a/modules/Logging +++ b/modules/Logging @@ -1 +1 @@ -Subproject commit 2ff997f71ad72420fa5a162e57483cd163008124 +Subproject commit c390b8504d71a5db1b2737b0ea0ef146bdfda0f2 From 70fc5893deac8911afef2d38d66b0842ba018a74 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Sat, 6 Oct 2018 16:33:19 -0700 Subject: [PATCH 06/20] Updating submodule(s) Diagnostics => 9722d895724f6af65812873b57fdf38378013f57 [auto-updated: submodules] --- modules/Diagnostics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/Diagnostics b/modules/Diagnostics index 014e7eb963..9722d89572 160000 --- a/modules/Diagnostics +++ b/modules/Diagnostics @@ -1 +1 @@ -Subproject commit 014e7eb96387641d1bc1441da48ad32f77fe7d10 +Subproject commit 9722d895724f6af65812873b57fdf38378013f57 From 537a226a34e2a5dc88b47cdbf05995b33bff1675 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Sun, 7 Oct 2018 12:51:49 -0700 Subject: [PATCH 07/20] Updating submodule(s) AuthSamples => 7383e532c9bbfaf843a137d627ba824694529507 AzureIntegration => 373faa5d3b34704a41cd1c490dc3f612af3ea3d8 BasicMiddleware => 1610c35d55f8d64abd401c9af83b3f2bcad192ad BrowserLink => 393e606f7f9e36b5a2f2ee539a4286d87412ba82 Caching => cbf901775402fc2e04b9d9ab864e99755084a7ac Configuration => 231faba8507764812c5038423a114eaee65705cb DataProtection => 3acb4dd4e9a8dd55fc7a936bbe5659ab934b2310 DependencyInjection => 5bd8bbb5238325892c78ea3be6a19e3a0d4a34ab DotNetTools => b473a0d76ce0c255962d97e22d45904c6b62fe5d EntityFrameworkCore => 7f494970e2b5cd9f7d0060dcdc393bbcfad1b682 FileSystem => a9ab1bd9866ee2a5ba91b62cc5913c16ee9a01b5 Hosting => dd2056ae1afdc729adfea584d7de79ef7f1534c0 HttpAbstractions => 2368024490e796329ba4e50c57e6e376011c45ee HttpClientFactory => 15fa0014e0eadafd19aecec286f82131e9cef588 HttpSysServer => 47300deacb8a2782d25f471ed6fc49cd4230fa2c Identity => a125959ffb344a966a27a56251aec5d18cf89b21 IISIntegration => b2e55456c705bbf57366ee8fcb88b9c52e4f96a5 JavaScriptServices => 3265b92086cb62a98d7a486f9e8f81a77ef56afc KestrelHttpServer => 6164ec72253238f6b57e3ab71c9fa9d949dc67d1 Logging => 32a4fb2fe374d83561212de6ce6849ef9972fd1e MetaPackages => ca6ab92ca48dc0d7f488192fee7deda48bc4182a Microsoft.Data.Sqlite => 588a8578aca4a7cfb8d8b1cce10ee94be5c1a128 Options => a9ca4548ff9843c85a3b87ec4cbf39bfd22483d8 Proxy => 909581d7f46df5ca00d8e9e6650f805ee7bf8c31 ResponseCaching => b21b893ad3bdeb2862ac990a39ed9f8f211fa6e1 Scaffolding => bab0875e25bf554b2aba6dace0b6cfb751d0628b Security => fcfa161cb7db735dfb4c386237b5858a4dc5926b ServerTests => c54d01f5936e24c9030bd17b49de2351ffc1d452 Session => a7ba1ec9ba71b76550ad6c1541bd8259359d9b61 SignalR => 55b9a53aa9d4e0db07d74623f9bfff9c977c8b94 StaticFiles => 6e91a8e72e515c0f581f714826ef726a24223c6b WebSockets => 56f90124026b1da5f260b3c1a55f75fab7ecbb68 [auto-updated: submodules] --- modules/AuthSamples | 2 +- modules/AzureIntegration | 2 +- modules/BasicMiddleware | 2 +- modules/BrowserLink | 2 +- modules/Caching | 2 +- modules/Configuration | 2 +- modules/DataProtection | 2 +- modules/DependencyInjection | 2 +- modules/DotNetTools | 2 +- modules/EntityFrameworkCore | 2 +- modules/FileSystem | 2 +- modules/Hosting | 2 +- modules/HttpAbstractions | 2 +- modules/HttpClientFactory | 2 +- modules/HttpSysServer | 2 +- modules/IISIntegration | 2 +- modules/Identity | 2 +- modules/JavaScriptServices | 2 +- modules/KestrelHttpServer | 2 +- modules/Logging | 2 +- modules/MetaPackages | 2 +- modules/Microsoft.Data.Sqlite | 2 +- modules/Options | 2 +- modules/Proxy | 2 +- modules/ResponseCaching | 2 +- modules/Scaffolding | 2 +- modules/Security | 2 +- modules/ServerTests | 2 +- modules/Session | 2 +- modules/SignalR | 2 +- modules/StaticFiles | 2 +- modules/WebSockets | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/modules/AuthSamples b/modules/AuthSamples index 4fcf35b0b8..7383e532c9 160000 --- a/modules/AuthSamples +++ b/modules/AuthSamples @@ -1 +1 @@ -Subproject commit 4fcf35b0b853548cbd276051e9c77dc19037350f +Subproject commit 7383e532c9bbfaf843a137d627ba824694529507 diff --git a/modules/AzureIntegration b/modules/AzureIntegration index 6f8c2e385c..373faa5d3b 160000 --- a/modules/AzureIntegration +++ b/modules/AzureIntegration @@ -1 +1 @@ -Subproject commit 6f8c2e385c64a92fcc06745b76e5c43d1301d49a +Subproject commit 373faa5d3b34704a41cd1c490dc3f612af3ea3d8 diff --git a/modules/BasicMiddleware b/modules/BasicMiddleware index 3fd750c1fe..1610c35d55 160000 --- a/modules/BasicMiddleware +++ b/modules/BasicMiddleware @@ -1 +1 @@ -Subproject commit 3fd750c1fe0342652c084ad7e44d1e196a5b7d11 +Subproject commit 1610c35d55f8d64abd401c9af83b3f2bcad192ad diff --git a/modules/BrowserLink b/modules/BrowserLink index 74b29a9730..393e606f7f 160000 --- a/modules/BrowserLink +++ b/modules/BrowserLink @@ -1 +1 @@ -Subproject commit 74b29a9730b5fed3cd6377c48562fd4810fb4598 +Subproject commit 393e606f7f9e36b5a2f2ee539a4286d87412ba82 diff --git a/modules/Caching b/modules/Caching index 1e63f14c72..cbf9017754 160000 --- a/modules/Caching +++ b/modules/Caching @@ -1 +1 @@ -Subproject commit 1e63f14c72e829cbf9a3f78c7724289d5a28604c +Subproject commit cbf901775402fc2e04b9d9ab864e99755084a7ac diff --git a/modules/Configuration b/modules/Configuration index 7a8ed11f91..231faba850 160000 --- a/modules/Configuration +++ b/modules/Configuration @@ -1 +1 @@ -Subproject commit 7a8ed11f9197778854fc7281c066075dcf336f5c +Subproject commit 231faba8507764812c5038423a114eaee65705cb diff --git a/modules/DataProtection b/modules/DataProtection index 018a252560..3acb4dd4e9 160000 --- a/modules/DataProtection +++ b/modules/DataProtection @@ -1 +1 @@ -Subproject commit 018a252560e6412b05586cd999866205b8d45e42 +Subproject commit 3acb4dd4e9a8dd55fc7a936bbe5659ab934b2310 diff --git a/modules/DependencyInjection b/modules/DependencyInjection index 600c3afaad..5bd8bbb523 160000 --- a/modules/DependencyInjection +++ b/modules/DependencyInjection @@ -1 +1 @@ -Subproject commit 600c3afaad1b304218b9803f91c74f5c75617f36 +Subproject commit 5bd8bbb5238325892c78ea3be6a19e3a0d4a34ab diff --git a/modules/DotNetTools b/modules/DotNetTools index 4c49d5ce80..b473a0d76c 160000 --- a/modules/DotNetTools +++ b/modules/DotNetTools @@ -1 +1 @@ -Subproject commit 4c49d5ce80f4515ac0549016822db04bbd647bb2 +Subproject commit b473a0d76ce0c255962d97e22d45904c6b62fe5d diff --git a/modules/EntityFrameworkCore b/modules/EntityFrameworkCore index 92b902d81c..7f494970e2 160000 --- a/modules/EntityFrameworkCore +++ b/modules/EntityFrameworkCore @@ -1 +1 @@ -Subproject commit 92b902d81c56ad2235c70a5d92f2d7523c4e01a3 +Subproject commit 7f494970e2b5cd9f7d0060dcdc393bbcfad1b682 diff --git a/modules/FileSystem b/modules/FileSystem index 23e6222e9c..a9ab1bd986 160000 --- a/modules/FileSystem +++ b/modules/FileSystem @@ -1 +1 @@ -Subproject commit 23e6222e9cd2b1c75707a8df063ad1f9386c427d +Subproject commit a9ab1bd9866ee2a5ba91b62cc5913c16ee9a01b5 diff --git a/modules/Hosting b/modules/Hosting index e30ae8cc3d..dd2056ae1a 160000 --- a/modules/Hosting +++ b/modules/Hosting @@ -1 +1 @@ -Subproject commit e30ae8cc3dbe4e59ae999a870c99c7cda9898f77 +Subproject commit dd2056ae1afdc729adfea584d7de79ef7f1534c0 diff --git a/modules/HttpAbstractions b/modules/HttpAbstractions index 89b0430bda..2368024490 160000 --- a/modules/HttpAbstractions +++ b/modules/HttpAbstractions @@ -1 +1 @@ -Subproject commit 89b0430bdad0f0ddb253ae699ea6b37e7108e89b +Subproject commit 2368024490e796329ba4e50c57e6e376011c45ee diff --git a/modules/HttpClientFactory b/modules/HttpClientFactory index 9f3b964cdd..15fa0014e0 160000 --- a/modules/HttpClientFactory +++ b/modules/HttpClientFactory @@ -1 +1 @@ -Subproject commit 9f3b964cdd91acee815cfecec8f7717cfc181ca2 +Subproject commit 15fa0014e0eadafd19aecec286f82131e9cef588 diff --git a/modules/HttpSysServer b/modules/HttpSysServer index cd904bd605..47300deacb 160000 --- a/modules/HttpSysServer +++ b/modules/HttpSysServer @@ -1 +1 @@ -Subproject commit cd904bd605adfab4e767dcc03ff2e4cd8b3558b9 +Subproject commit 47300deacb8a2782d25f471ed6fc49cd4230fa2c diff --git a/modules/IISIntegration b/modules/IISIntegration index a2d5d7a53e..b2e55456c7 160000 --- a/modules/IISIntegration +++ b/modules/IISIntegration @@ -1 +1 @@ -Subproject commit a2d5d7a53ef53c3dea27d97e6de29a0f5f1e9411 +Subproject commit b2e55456c705bbf57366ee8fcb88b9c52e4f96a5 diff --git a/modules/Identity b/modules/Identity index dd9873b9d0..a125959ffb 160000 --- a/modules/Identity +++ b/modules/Identity @@ -1 +1 @@ -Subproject commit dd9873b9d072b278b536d6cfbc0a1fcd71a04c91 +Subproject commit a125959ffb344a966a27a56251aec5d18cf89b21 diff --git a/modules/JavaScriptServices b/modules/JavaScriptServices index ef999a57fd..3265b92086 160000 --- a/modules/JavaScriptServices +++ b/modules/JavaScriptServices @@ -1 +1 @@ -Subproject commit ef999a57fd59e1ce18938491d905be3649032056 +Subproject commit 3265b92086cb62a98d7a486f9e8f81a77ef56afc diff --git a/modules/KestrelHttpServer b/modules/KestrelHttpServer index 5b90028fe3..6164ec7225 160000 --- a/modules/KestrelHttpServer +++ b/modules/KestrelHttpServer @@ -1 +1 @@ -Subproject commit 5b90028fe370c68e93fb20153880bd97cce1905d +Subproject commit 6164ec72253238f6b57e3ab71c9fa9d949dc67d1 diff --git a/modules/Logging b/modules/Logging index c390b8504d..32a4fb2fe3 160000 --- a/modules/Logging +++ b/modules/Logging @@ -1 +1 @@ -Subproject commit c390b8504d71a5db1b2737b0ea0ef146bdfda0f2 +Subproject commit 32a4fb2fe374d83561212de6ce6849ef9972fd1e diff --git a/modules/MetaPackages b/modules/MetaPackages index ee52ff2dc9..ca6ab92ca4 160000 --- a/modules/MetaPackages +++ b/modules/MetaPackages @@ -1 +1 @@ -Subproject commit ee52ff2dc9dc941968631440707d22f6961be178 +Subproject commit ca6ab92ca48dc0d7f488192fee7deda48bc4182a diff --git a/modules/Microsoft.Data.Sqlite b/modules/Microsoft.Data.Sqlite index 941a79bdb5..588a8578ac 160000 --- a/modules/Microsoft.Data.Sqlite +++ b/modules/Microsoft.Data.Sqlite @@ -1 +1 @@ -Subproject commit 941a79bdb56baeebc10f1ca082368f0ef31c1264 +Subproject commit 588a8578aca4a7cfb8d8b1cce10ee94be5c1a128 diff --git a/modules/Options b/modules/Options index 1a17d24a93..a9ca4548ff 160000 --- a/modules/Options +++ b/modules/Options @@ -1 +1 @@ -Subproject commit 1a17d24a93f1e45aaebd2bb5c6b11f7e3a3b2587 +Subproject commit a9ca4548ff9843c85a3b87ec4cbf39bfd22483d8 diff --git a/modules/Proxy b/modules/Proxy index c4400e63d2..909581d7f4 160000 --- a/modules/Proxy +++ b/modules/Proxy @@ -1 +1 @@ -Subproject commit c4400e63d2b8a8a8f9660e1c05225228601207a8 +Subproject commit 909581d7f46df5ca00d8e9e6650f805ee7bf8c31 diff --git a/modules/ResponseCaching b/modules/ResponseCaching index 08de3ced72..b21b893ad3 160000 --- a/modules/ResponseCaching +++ b/modules/ResponseCaching @@ -1 +1 @@ -Subproject commit 08de3ced7277cc5a83b125fadfaa62ea2b3dbb58 +Subproject commit b21b893ad3bdeb2862ac990a39ed9f8f211fa6e1 diff --git a/modules/Scaffolding b/modules/Scaffolding index ba6e9f51fc..bab0875e25 160000 --- a/modules/Scaffolding +++ b/modules/Scaffolding @@ -1 +1 @@ -Subproject commit ba6e9f51fc7b0faf97b4b2d96f4c07dd365b229f +Subproject commit bab0875e25bf554b2aba6dace0b6cfb751d0628b diff --git a/modules/Security b/modules/Security index 889abf6f6e..fcfa161cb7 160000 --- a/modules/Security +++ b/modules/Security @@ -1 +1 @@ -Subproject commit 889abf6f6ec4119dbd27c1a8d07a7566e0e91627 +Subproject commit fcfa161cb7db735dfb4c386237b5858a4dc5926b diff --git a/modules/ServerTests b/modules/ServerTests index 5226987452..c54d01f593 160000 --- a/modules/ServerTests +++ b/modules/ServerTests @@ -1 +1 @@ -Subproject commit 5226987452cd94409d088c0601b5036c0b19f685 +Subproject commit c54d01f5936e24c9030bd17b49de2351ffc1d452 diff --git a/modules/Session b/modules/Session index 5e66e11152..a7ba1ec9ba 160000 --- a/modules/Session +++ b/modules/Session @@ -1 +1 @@ -Subproject commit 5e66e1115276d2cd43ad2b9a28629c0c5dbfc3df +Subproject commit a7ba1ec9ba71b76550ad6c1541bd8259359d9b61 diff --git a/modules/SignalR b/modules/SignalR index d1829b2491..55b9a53aa9 160000 --- a/modules/SignalR +++ b/modules/SignalR @@ -1 +1 @@ -Subproject commit d1829b24915ccbe8d74f59f99877b79926471cfe +Subproject commit 55b9a53aa9d4e0db07d74623f9bfff9c977c8b94 diff --git a/modules/StaticFiles b/modules/StaticFiles index 49dc5af930..6e91a8e72e 160000 --- a/modules/StaticFiles +++ b/modules/StaticFiles @@ -1 +1 @@ -Subproject commit 49dc5af93081db4861836198e4ce2d8b94eafae4 +Subproject commit 6e91a8e72e515c0f581f714826ef726a24223c6b diff --git a/modules/WebSockets b/modules/WebSockets index c639a462a1..56f9012402 160000 --- a/modules/WebSockets +++ b/modules/WebSockets @@ -1 +1 @@ -Subproject commit c639a462a1393a0e51f9a8835bfe21f62954cd18 +Subproject commit 56f90124026b1da5f260b3c1a55f75fab7ecbb68 From cfb40a8e83d5fe69bc3a989779257054c3d876da Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Sun, 7 Oct 2018 17:43:37 -0700 Subject: [PATCH 08/20] Updating submodule(s) SignalR => 596f8acce1f16f30c83ba99f0b7d337778e2fdc8 [auto-updated: submodules] --- modules/SignalR | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/SignalR b/modules/SignalR index 55b9a53aa9..596f8acce1 160000 --- a/modules/SignalR +++ b/modules/SignalR @@ -1 +1 @@ -Subproject commit 55b9a53aa9d4e0db07d74623f9bfff9c977c8b94 +Subproject commit 596f8acce1f16f30c83ba99f0b7d337778e2fdc8 From 522e72460109273f77e1d91b2cb21ece67043a23 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Mon, 8 Oct 2018 16:47:53 +0000 Subject: [PATCH 09/20] Updating submodule(s) CORS => b9166f14f105cb163942b50f1a9a5b3e3f43e5a5 MetaPackages => 4347a45f292fe340a5e78c9afddde7e6d2f3dd29 [auto-updated: submodules] --- modules/CORS | 2 +- modules/MetaPackages | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/CORS b/modules/CORS index 6f76189846..b9166f14f1 160000 --- a/modules/CORS +++ b/modules/CORS @@ -1 +1 @@ -Subproject commit 6f76189846214f7a5e863e19c29c8acfb79bd5fa +Subproject commit b9166f14f105cb163942b50f1a9a5b3e3f43e5a5 diff --git a/modules/MetaPackages b/modules/MetaPackages index ca6ab92ca4..4347a45f29 160000 --- a/modules/MetaPackages +++ b/modules/MetaPackages @@ -1 +1 @@ -Subproject commit ca6ab92ca48dc0d7f488192fee7deda48bc4182a +Subproject commit 4347a45f292fe340a5e78c9afddde7e6d2f3dd29 From a135b83fd70e1d5600f85f1463252d03e65fa0a0 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Mon, 8 Oct 2018 18:01:46 +0000 Subject: [PATCH 10/20] Updating submodule(s) EntityFrameworkCore => ef7936c87e4f86766d5052823c807bf6e277d501 Mvc => 956441aa68ce7516bce69fda616a0fe060c83882 [auto-updated: submodules] --- modules/EntityFrameworkCore | 2 +- modules/Mvc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/EntityFrameworkCore b/modules/EntityFrameworkCore index 7f494970e2..ef7936c87e 160000 --- a/modules/EntityFrameworkCore +++ b/modules/EntityFrameworkCore @@ -1 +1 @@ -Subproject commit 7f494970e2b5cd9f7d0060dcdc393bbcfad1b682 +Subproject commit ef7936c87e4f86766d5052823c807bf6e277d501 diff --git a/modules/Mvc b/modules/Mvc index 67a1f2dda9..956441aa68 160000 --- a/modules/Mvc +++ b/modules/Mvc @@ -1 +1 @@ -Subproject commit 67a1f2dda9bcb5795033b0c0ce775d931627fe17 +Subproject commit 956441aa68ce7516bce69fda616a0fe060c83882 From 416136e5f8b6bf4d03502a6fa9105f01cf39899a Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Mon, 8 Oct 2018 19:05:35 +0000 Subject: [PATCH 11/20] Updating submodule(s) IISIntegration => 71262846bf5aa26a767766a299689a42f1e77a37 SignalR => 813a9e68bc6248113d88377e37879b9e6a5aef67 [auto-updated: submodules] --- modules/IISIntegration | 2 +- modules/SignalR | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/IISIntegration b/modules/IISIntegration index b2e55456c7..71262846bf 160000 --- a/modules/IISIntegration +++ b/modules/IISIntegration @@ -1 +1 @@ -Subproject commit b2e55456c705bbf57366ee8fcb88b9c52e4f96a5 +Subproject commit 71262846bf5aa26a767766a299689a42f1e77a37 diff --git a/modules/SignalR b/modules/SignalR index 596f8acce1..813a9e68bc 160000 --- a/modules/SignalR +++ b/modules/SignalR @@ -1 +1 @@ -Subproject commit 596f8acce1f16f30c83ba99f0b7d337778e2fdc8 +Subproject commit 813a9e68bc6248113d88377e37879b9e6a5aef67 From 4d8c21c219e0b12dc10803b3274d0ec82833a032 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Mon, 8 Oct 2018 14:51:01 -0700 Subject: [PATCH 12/20] Updating submodule(s) EntityFrameworkCore => 25a05bf8e32ae4743ae7f49ba89a20e98a7fa523 [auto-updated: submodules] --- modules/EntityFrameworkCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/EntityFrameworkCore b/modules/EntityFrameworkCore index ef7936c87e..25a05bf8e3 160000 --- a/modules/EntityFrameworkCore +++ b/modules/EntityFrameworkCore @@ -1 +1 @@ -Subproject commit ef7936c87e4f86766d5052823c807bf6e277d501 +Subproject commit 25a05bf8e32ae4743ae7f49ba89a20e98a7fa523 From 1593966f3bd183491162b5a505110ecc7e4bc9b5 Mon Sep 17 00:00:00 2001 From: Ryan Brandenburg Date: Mon, 8 Oct 2018 17:00:50 -0700 Subject: [PATCH 13/20] Update repos send PRs --- scripts/UpdateRepos.ps1 | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/scripts/UpdateRepos.ps1 b/scripts/UpdateRepos.ps1 index 24b921b867..8a59675c8e 100755 --- a/scripts/UpdateRepos.ps1 +++ b/scripts/UpdateRepos.ps1 @@ -31,6 +31,7 @@ param( [switch]$NoPush, [string]$GitAuthorName = $null, [string]$GitAuthorEmail = $null, + [string]$GithubToken = $null, [switch]$Force, [string[]]$GitCommitArgs = @() ) @@ -43,14 +44,7 @@ Import-Module "$PSScriptRoot/common.psm1" -Scope Local -Force $RepoRoot = Resolve-Path "$PSScriptRoot\.." $ModuleDirectory = Join-Path $RepoRoot "modules" -$gitConfigArgs = @() -if ($GitAuthorName) { - $gitConfigArgs += '-c', "user.name=$GitAuthorName" -} - -if ($GitAuthorEmail) { - $gitConfigArgs += '-c', "user.email=$GitAuthorEmail" -} +Set-GitHubInfo $GithubToken $GitAuthorName $GitAuthorEmail Push-Location $ModuleDirectory try { @@ -79,12 +73,13 @@ try { Write-Verbose "About to update dependencies.props for $($submodule.module)" & .\run.ps1 upgrade deps --source $Source --id $LineupID --version $LineupVersion --deps-file $depsFile - Invoke-Block { & git @gitConfigArgs add $depsFile $koreBuildLock } + Invoke-Block { & git add $depsFile $koreBuildLock } # If there were any changes test and push. & git diff --cached --quiet ./ + $msgBody = "Update dependencies.props`n`n[auto-updated: dependencies]" if ($LASTEXITCODE -ne 0) { - Invoke-Block { & git @gitConfigArgs commit --quiet -m "Update dependencies.props`n`n[auto-updated: dependencies]" @GitCommitArgs } + Invoke-Block { & git commit --quiet -m $msgBody @GitCommitArgs } # Prepare this submodule for push $sshUrl = "git@github.com:aspnet/$($submodule.module)" @@ -105,8 +100,10 @@ try { # Push the changes if (-not $NoPush -and ($Force -or ($PSCmdlet.ShouldContinue("Pushing updates to repos.", 'Push the changes to these repos?')))) { + $baseBranch = $submodule.branch + $upgradeBranch = "$baseBranch/upgrade-deps" try { - Invoke-Block { & git @gitConfigArgs push origin HEAD:$($submodule.branch)} + CreatePR "aspnet" $GithubUsername $baseBranch $upgradeBranch $msgBody $GithubToken } catch { Write-Warning "Error in pushing $($submodule.module): $_" From 83e8d64952b2efbeef855926d8531aff296736e1 Mon Sep 17 00:00:00 2001 From: Arthur Vickers Date: Tue, 9 Oct 2018 09:46:20 -0700 Subject: [PATCH 14/20] Updating EF submodule --- modules/EntityFrameworkCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/EntityFrameworkCore b/modules/EntityFrameworkCore index 25a05bf8e3..17bcfb4acf 160000 --- a/modules/EntityFrameworkCore +++ b/modules/EntityFrameworkCore @@ -1 +1 @@ -Subproject commit 25a05bf8e32ae4743ae7f49ba89a20e98a7fa523 +Subproject commit 17bcfb4acf4a045ccbd8a8b711d581bbef4200d5 From 12761474d3671dba48c5bcc76b602339699be278 Mon Sep 17 00:00:00 2001 From: Arthur Vickers Date: Tue, 9 Oct 2018 10:27:49 -0700 Subject: [PATCH 15/20] Rename Cosmos.Sql to Cosmos (#1467) --- build/artifacts.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/artifacts.props b/build/artifacts.props index 7ff38b1188..3696cb9977 100644 --- a/build/artifacts.props +++ b/build/artifacts.props @@ -188,7 +188,7 @@ - + From 21b98de09ba76f106c2d13480de9107d7444d999 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Tue, 9 Oct 2018 10:46:27 -0700 Subject: [PATCH 16/20] Update System.IO.Pipelines to 4.5.2 (#1458) --- build/dependencies.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/dependencies.props b/build/dependencies.props index 2cffa94cc7..a775c73de6 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -131,7 +131,7 @@ 4.5.0 5.2.0 3.2.0 - 4.5.0 + 4.5.2 4.5.1 4.3.2 4.5.0 From 70f2d3abd9764bcab73dd380d69bb0ed19d21210 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Mon, 8 Oct 2018 17:05:36 -0700 Subject: [PATCH 17/20] Update Roslyn version. aspnet/Razor#2634 --- build/dependencies.props | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/build/dependencies.props b/build/dependencies.props index a775c73de6..c46d8c6b7c 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -56,9 +56,9 @@ 15.6.82 15.6.82 15.6.82 - 2.8.0 - 2.8.0 - 2.8.0 + 2.9.0 + 2.9.0 + 2.9.0 4.5.0 1.7.0 0.2.0-beta-63019-01 @@ -154,15 +154,15 @@ 4.5.0 1.3.7 9.0.1 - 2.9.0-beta4-62911-02 - 2.9.0-beta4-62911-02 - 2.9.0-beta4-62911-02 - 2.9.0-beta4-62911-02 - 2.9.0-beta4-62911-02 + 2.9.0 + 2.9.0 + 2.9.0 + 2.9.0 + 2.9.0 2.9.0-beta4-62911-02 - 2.9.0-beta4-62911-02 - 2.9.0-beta4-62911-02 - 2.9.0-beta4-62911-02 + 2.9.0 + 2.9.0 + 2.9.0 2.9.0-beta4-62911-02 8.1.4 2.0.1 From 3cd98acda3c12c6968b31c8815cd80d32adc2710 Mon Sep 17 00:00:00 2001 From: dotnet-maestro-bot Date: Tue, 9 Oct 2018 11:33:03 -0700 Subject: [PATCH 18/20] Updating external dependencies (#1464) --- build/dependencies.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/dependencies.props b/build/dependencies.props index c46d8c6b7c..c4eabe9a91 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -2,9 +2,9 @@ - 2.2.0-preview3-27001-02 - 2.2.0-preview3-27001-02 - 4.6.0-preview3-27001-02 + 2.2.0-preview3-27008-03 + 2.2.0-preview3-27008-03 + 4.6.0-preview3-27008-03 From 18b61e9217b24999fc27c54768a4a88a52b0b27f Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Tue, 9 Oct 2018 11:53:37 -0700 Subject: [PATCH 19/20] Revert "Update Roslyn version." This reverts commit 70f2d3abd9764bcab73dd380d69bb0ed19d21210. --- build/dependencies.props | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/build/dependencies.props b/build/dependencies.props index c4eabe9a91..3686d55b21 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -56,9 +56,9 @@ 15.6.82 15.6.82 15.6.82 - 2.9.0 - 2.9.0 - 2.9.0 + 2.8.0 + 2.8.0 + 2.8.0 4.5.0 1.7.0 0.2.0-beta-63019-01 @@ -154,15 +154,15 @@ 4.5.0 1.3.7 9.0.1 - 2.9.0 - 2.9.0 - 2.9.0 - 2.9.0 - 2.9.0 + 2.9.0-beta4-62911-02 + 2.9.0-beta4-62911-02 + 2.9.0-beta4-62911-02 + 2.9.0-beta4-62911-02 + 2.9.0-beta4-62911-02 2.9.0-beta4-62911-02 - 2.9.0 - 2.9.0 - 2.9.0 + 2.9.0-beta4-62911-02 + 2.9.0-beta4-62911-02 + 2.9.0-beta4-62911-02 2.9.0-beta4-62911-02 8.1.4 2.0.1 From eaad1eb3aa3336c1d94501f91cff4ae7bb73159f Mon Sep 17 00:00:00 2001 From: Nate McMaster Date: Tue, 9 Oct 2018 12:01:41 -0700 Subject: [PATCH 20/20] Remove tasks for analyzing the repo graph (#1469) As a part of converging repos, we no longer need this code. It is currently buggy and slow, and we can get away without by hard-coding the repo graph (which rarely changes) --- NuGet.config | 7 +- build/GenerateCode.targets | 17 - build/buildorder.props | 8 +- build/repo.targets | 21 +- build/tasks/AnalyzeBuildGraph.cs | 294 ------------------ build/tasks/BuildGraph/ExternalDependency.cs | 12 - build/tasks/BuildGraph/GraphBuilder.cs | 50 --- build/tasks/BuildGraph/GraphNode.cs | 18 -- build/tasks/BuildGraph/Project.cs | 28 -- build/tasks/BuildGraph/Repository.cs | 33 -- build/tasks/BuildGraph/TopologicalSort.cs | 46 --- build/tasks/CheckRepoGraph.cs | 223 ------------- build/tasks/CodeGen/DirectedGraphXml.cs | 42 --- build/tasks/CodeGen/GenerateSubmoduleGraph.cs | 226 -------------- build/tasks/CodeGen/RepositoryProject.cs | 46 --- .../ProjectModel/DotNetCliReferenceInfo.cs | 24 -- build/tasks/ProjectModel/PackageInfo.cs | 44 --- .../ProjectModel/PackageReferenceInfo.cs | 27 -- build/tasks/ProjectModel/PatchPolicy.cs | 31 -- .../ProjectModel/ProjectFrameworkInfo.cs | 22 -- build/tasks/ProjectModel/ProjectInfo.cs | 47 --- .../tasks/ProjectModel/ProjectInfoFactory.cs | 137 -------- build/tasks/ProjectModel/SolutionInfo.cs | 44 --- .../tasks/ProjectModel/SolutionInfoFactory.cs | 136 -------- build/tasks/RepoTasks.tasks | 3 - build/tasks/Utilities/ArtifactInfo.cs | 70 ----- build/tasks/Utilities/KoreBuildErrors.cs | 31 -- build/tasks/Utilities/LoggingExtensions.cs | 26 -- build/tasks/Utilities/MSBuildListSplitter.cs | 45 --- global.json | 2 +- scripts/UpdateBuildTools.ps1 | 1 + 31 files changed, 13 insertions(+), 1748 deletions(-) delete mode 100644 build/GenerateCode.targets delete mode 100644 build/tasks/AnalyzeBuildGraph.cs delete mode 100644 build/tasks/BuildGraph/ExternalDependency.cs delete mode 100644 build/tasks/BuildGraph/GraphBuilder.cs delete mode 100644 build/tasks/BuildGraph/GraphNode.cs delete mode 100644 build/tasks/BuildGraph/Project.cs delete mode 100644 build/tasks/BuildGraph/Repository.cs delete mode 100644 build/tasks/BuildGraph/TopologicalSort.cs delete mode 100644 build/tasks/CheckRepoGraph.cs delete mode 100644 build/tasks/CodeGen/DirectedGraphXml.cs delete mode 100644 build/tasks/CodeGen/GenerateSubmoduleGraph.cs delete mode 100644 build/tasks/CodeGen/RepositoryProject.cs delete mode 100644 build/tasks/ProjectModel/DotNetCliReferenceInfo.cs delete mode 100644 build/tasks/ProjectModel/PackageInfo.cs delete mode 100644 build/tasks/ProjectModel/PackageReferenceInfo.cs delete mode 100644 build/tasks/ProjectModel/PatchPolicy.cs delete mode 100644 build/tasks/ProjectModel/ProjectFrameworkInfo.cs delete mode 100644 build/tasks/ProjectModel/ProjectInfo.cs delete mode 100644 build/tasks/ProjectModel/ProjectInfoFactory.cs delete mode 100644 build/tasks/ProjectModel/SolutionInfo.cs delete mode 100644 build/tasks/ProjectModel/SolutionInfoFactory.cs delete mode 100644 build/tasks/Utilities/ArtifactInfo.cs delete mode 100644 build/tasks/Utilities/KoreBuildErrors.cs delete mode 100644 build/tasks/Utilities/LoggingExtensions.cs delete mode 100644 build/tasks/Utilities/MSBuildListSplitter.cs diff --git a/NuGet.config b/NuGet.config index e32bddfd51..cec9479a72 100644 --- a/NuGet.config +++ b/NuGet.config @@ -2,6 +2,11 @@ - + + diff --git a/build/GenerateCode.targets b/build/GenerateCode.targets deleted file mode 100644 index 069e358ae6..0000000000 --- a/build/GenerateCode.targets +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/build/buildorder.props b/build/buildorder.props index e76dcda59f..ca08cb52e1 100644 --- a/build/buildorder.props +++ b/build/buildorder.props @@ -16,22 +16,22 @@ - + - + - + - + diff --git a/build/repo.targets b/build/repo.targets index a379d87aaf..f842e8966c 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -5,10 +5,7 @@ - - - - + $(IntermediateDir)dependencies.g.props @@ -226,12 +223,6 @@ - - <_UndeclaredPackageArtifact Include="%(ArtifactInfo.PackageId)" Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetPackage'" /> <_UndeclaredPackageArtifact Remove="@(PackageArtifact)" /> @@ -240,16 +231,6 @@ - - - - - diff --git a/build/tasks/AnalyzeBuildGraph.cs b/build/tasks/AnalyzeBuildGraph.cs deleted file mode 100644 index fac4914f30..0000000000 --- a/build/tasks/AnalyzeBuildGraph.cs +++ /dev/null @@ -1,294 +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.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using NuGet.Versioning; -using RepoTasks.ProjectModel; -using RepoTasks.Utilities; -using RepoTools.BuildGraph; - -namespace RepoTasks -{ - public class AnalyzeBuildGraph : Task, ICancelableTask - { - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - - /// - /// Repositories that we are building new versions of. - /// - [Required] - public ITaskItem[] Solutions { get; set; } - - [Required] - public ITaskItem[] Artifacts { get; set; } - - [Required] - public ITaskItem[] Repositories { get; set; } - - [Required] - public ITaskItem[] Dependencies { get; set; } - - [Required] - public string Properties { get; set; } - - /// - /// The order in which to build repositories - /// - [Output] - public ITaskItem[] RepositoryBuildOrder { get; set; } - - public void Cancel() - { - _cts.Cancel(); - } - - public override bool Execute() - { - var packageArtifacts = Artifacts.Select(ArtifactInfo.Parse) - .OfType() - .Where(p => !p.IsSymbolsArtifact); - - var factory = new SolutionInfoFactory(Log, BuildEngine5); - var props = MSBuildListSplitter.GetNamedProperties(Properties); - - Log.LogMessage(MessageImportance.High, $"Beginning cross-repo analysis on {Solutions.Length} solutions. Hang tight..."); - - if (!props.TryGetValue("Configuration", out var defaultConfig)) - { - defaultConfig = "Debug"; - } - - var solutions = factory.Create(Solutions, props, defaultConfig, _cts.Token); - Log.LogMessage($"Found {solutions.Count} and {solutions.Sum(p => p.Projects.Count)} projects"); - - var policies = new Dictionary(); - foreach (var repo in Repositories) - { - policies.Add(repo.ItemSpec, Enum.Parse(repo.GetMetadata("PatchPolicy"))); - } - - foreach (var solution in solutions) - { - var repoName = Path.GetFileName(solution.Directory); - solution.PatchPolicy = policies[repoName]; - } - - if (_cts.IsCancellationRequested) - { - return false; - } - - EnsureConsistentGraph(packageArtifacts, solutions); - RepositoryBuildOrder = GetRepositoryBuildOrder(packageArtifacts, solutions.Where(s => s.ShouldBuild)); - - return !Log.HasLoggedErrors; - } - - private struct VersionMismatch - { - public SolutionInfo Solution; - public ProjectInfo Project; - public string PackageId; - public string ActualVersion; - public NuGetVersion ExpectedVersion; - } - - private void EnsureConsistentGraph(IEnumerable packages, IEnumerable solutions) - { - // ensure versions cascade - var buildPackageMap = packages.ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase); - var dependencyMap = new Dictionary>(StringComparer.OrdinalIgnoreCase); - foreach (var dep in Dependencies) - { - if (!dependencyMap.TryGetValue(dep.ItemSpec, out var versions)) - { - dependencyMap[dep.ItemSpec] = versions = new List(); - } - - versions.Add(new ExternalDependency - { - PackageId = dep.ItemSpec, - Version = dep.GetMetadata("Version"), - }); - } - - var inconsistentVersions = new List(); - - foreach (var solution in solutions) - foreach (var project in solution.Projects) - foreach (var tfm in project.Frameworks) - foreach (var dependency in tfm.Dependencies) - { - var dependencyVersion = dependency.Value.Version; - if (!buildPackageMap.TryGetValue(dependency.Key, out var package)) - { - // This dependency is not one of the packages that will be compiled by this run of Universe. - // Must match an external dependency, including its Version. - var idx = -1; - if (!dependencyMap.TryGetValue(dependency.Key, out var externalVersions) - || (idx = externalVersions.FindIndex(0, externalVersions.Count, i => i.Version == dependencyVersion)) < 0) - { - Log.LogKoreBuildError( - project.FullPath, - KoreBuildErrors.UndefinedExternalDependency, - message: $"Undefined external dependency on {dependency.Key}/{dependencyVersion}"); - } - - if (idx >= 0) - { - externalVersions[idx].IsReferenced = true; - } - continue; - } - - // This package will be created in this Universe run. - var refVersion = VersionRange.Parse(dependencyVersion); - if (refVersion.IsFloating && refVersion.Float.Satisfies(package.PackageInfo.Version)) - { - continue; - } - else if (package.PackageInfo.Version.Equals(refVersion.MinVersion)) - { - continue; - } - else if (dependencyMap.TryGetValue(dependency.Key, out var externalDependency) && - externalDependency.Any(ext => ext.Version == dependencyVersion)) - { - // Project depends on external version of this package, not the version built in Universe. That's - // fine in benchmark apps for example. - continue; - } - - var shouldCascade = (solution.PatchPolicy & PatchPolicy.CascadeVersions) != 0; - if (!solution.ShouldBuild && !solution.IsPatching && shouldCascade) - { - var repoName = Path.GetFileName(Path.GetDirectoryName(solution.FullPath)); - Log.LogError($"{repoName} should not be marked 'IsPatching=false'. Version changes in other repositories mean it should be patched to perserve cascading version upgrades."); - - } - - if (shouldCascade) - { - inconsistentVersions.Add(new VersionMismatch - { - Solution = solution, - Project = project, - PackageId = dependency.Key, - ActualVersion = dependency.Value.Version, - ExpectedVersion = package.PackageInfo.Version, - }); - } - } - - if (inconsistentVersions.Count != 0) - { - var sb = new StringBuilder(); - sb.AppendLine(); - sb.AppendLine($"Repos are inconsistent. The following projects have PackageReferences that should be updated"); - foreach (var solution in inconsistentVersions.GroupBy(p => p.Solution.FullPath)) - { - sb.Append(" - ").AppendLine(Path.GetFileName(solution.Key)); - foreach (var project in solution.GroupBy(p => p.Project.FullPath)) - { - sb.Append(" - ").AppendLine(Path.GetFileName(project.Key)); - foreach (var mismatchedReference in project) - { - sb.AppendLine($" + {mismatchedReference.PackageId}/{{{mismatchedReference.ActualVersion} => {mismatchedReference.ExpectedVersion}}}"); - } - } - } - sb.AppendLine(); - Log.LogMessage(MessageImportance.High, sb.ToString()); - Log.LogError("Package versions are inconsistent. See build log for details."); - } - - foreach (var versions in dependencyMap.Values) - { - foreach (var item in versions.Where(i => !i.IsReferenced)) - { - // See https://github.com/aspnet/Universe/wiki/Build-warning-and-error-codes#potentially-unused-external-dependency for details - Log.LogMessage(MessageImportance.Normal, $"Potentially unused external dependency: {item.PackageId}/{item.Version}. See https://github.com/aspnet/Universe/wiki/Build-warning-and-error-codes for details."); - } - } - } - - private ITaskItem[] GetRepositoryBuildOrder(IEnumerable artifacts, IEnumerable solutions) - { - var repositories = solutions.Select(s => - { - var repoName = Path.GetFileName(Path.GetDirectoryName(s.FullPath)); - var repo = new Repository(repoName) - { - RootDir = Path.GetDirectoryName(s.FullPath) - }; - - var packages = artifacts - .Where(a => string.Equals(a.RepoName, repoName, StringComparison.OrdinalIgnoreCase)) - .ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase); - - foreach (var proj in s.Projects) - { - IList projectGroup; - if (packages.ContainsKey(proj.PackageId)) - { - // this project is a package producer and consumer - packages.Remove(proj.PackageId); - projectGroup = repo.Projects; - } - else - { - // this project is a package consumer - projectGroup = repo.SupportProjects; - } - - - projectGroup.Add(new Project(proj.PackageId) - { - Repository = repo, - PackageReferences = new HashSet(proj - .Frameworks - .SelectMany(f => f.Dependencies.Keys) - .Concat(proj.Tools.Select(t => t.Id)), StringComparer.OrdinalIgnoreCase), - }); - } - - foreach (var packageId in packages.Keys) - { - // these packages are produced from something besides a csproj. e.g. .Sources packages - repo.Projects.Add(new Project(packageId) { Repository = repo }); - } - - return repo; - }).ToList(); - - var graph = GraphBuilder.Generate(repositories, Log); - var repositoriesWithOrder = new List<(ITaskItem repository, int order)>(); - foreach (var repository in repositories) - { - var graphNodeRepository = graph.FirstOrDefault(g => g.Repository.Name == repository.Name); - if (graphNodeRepository == null) - { - continue; - } - - var order = TopologicalSort.GetOrder(graphNodeRepository); - var repositoryTaskItem = new TaskItem(repository.Name); - repositoryTaskItem.SetMetadata("Order", order.ToString()); - repositoryTaskItem.SetMetadata("RootPath", repository.RootDir); - repositoriesWithOrder.Add((repositoryTaskItem, order)); - } - - return repositoriesWithOrder - .OrderBy(r => r.order) - .Select(r => r.repository) - .ToArray(); - } - } -} diff --git a/build/tasks/BuildGraph/ExternalDependency.cs b/build/tasks/BuildGraph/ExternalDependency.cs deleted file mode 100644 index 5bdc67d027..0000000000 --- a/build/tasks/BuildGraph/ExternalDependency.cs +++ /dev/null @@ -1,12 +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. - -namespace RepoTools.BuildGraph -{ - internal class ExternalDependency - { - public string PackageId { get; set; } - public string Version { get; set; } - public bool IsReferenced { get; set; } - } -} diff --git a/build/tasks/BuildGraph/GraphBuilder.cs b/build/tasks/BuildGraph/GraphBuilder.cs deleted file mode 100644 index 355989f171..0000000000 --- a/build/tasks/BuildGraph/GraphBuilder.cs +++ /dev/null @@ -1,50 +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.Collections.Generic; -using System.IO; -using System.Linq; -using Microsoft.Build.Utilities; - -namespace RepoTools.BuildGraph -{ - public static class GraphBuilder - { - public static IList Generate(IList repositories, TaskLoggingHelper log) - { - // Build global list of primary projects - var primaryProjects = repositories.SelectMany(c => c.Projects) - .ToDictionary(p => p.Name, StringComparer.OrdinalIgnoreCase); - var graphNodes = repositories.Select(r => new GraphNode { Repository = r }) - .ToDictionary(r => r.Repository); - - foreach (var project in repositories.SelectMany(r => r.AllProjects)) - { - var thisProjectRepositoryNode = graphNodes[project.Repository]; - - foreach (var packageDependency in project.PackageReferences) - { - if (primaryProjects.TryGetValue(packageDependency, out var dependencyProject)) - { - var dependencyRepository = dependencyProject.Repository; - var dependencyNode = graphNodes[dependencyRepository]; - - if (ReferenceEquals(thisProjectRepositoryNode, dependencyNode)) - { - log.LogWarning("{0} has a package reference to a package produced in the same repo. {1} -> {2}", project.Repository.Name, Path.GetFileName(project.Path), packageDependency); - } - else - { - thisProjectRepositoryNode.Incoming.Add(dependencyNode); - } - - dependencyNode.Outgoing.Add(thisProjectRepositoryNode); - } - } - } - - return graphNodes.Values.ToList(); - } - } -} diff --git a/build/tasks/BuildGraph/GraphNode.cs b/build/tasks/BuildGraph/GraphNode.cs deleted file mode 100644 index b7197e8b38..0000000000 --- a/build/tasks/BuildGraph/GraphNode.cs +++ /dev/null @@ -1,18 +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.Collections.Generic; -using System.Diagnostics; - -namespace RepoTools.BuildGraph -{ - [DebuggerDisplay("{Repository.Name}")] - public class GraphNode - { - public Repository Repository { get; set; } - - public ISet Incoming { get; } = new HashSet(); - - public ISet Outgoing { get; } = new HashSet(); - } -} diff --git a/build/tasks/BuildGraph/Project.cs b/build/tasks/BuildGraph/Project.cs deleted file mode 100644 index ad03468a61..0000000000 --- a/build/tasks/BuildGraph/Project.cs +++ /dev/null @@ -1,28 +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.Collections.Generic; -using System.Diagnostics; - -namespace RepoTools.BuildGraph -{ - [DebuggerDisplay("{Name}")] - public class Project - { - public Project(string name) - { - Name = name; - } - - public string Name { get; } - - public string Version { get; set; } - - public string Path { get; set; } - - public Repository Repository { get; set; } - - public ISet PackageReferences { get; set; } = new HashSet(StringComparer.OrdinalIgnoreCase); - } -} diff --git a/build/tasks/BuildGraph/Repository.cs b/build/tasks/BuildGraph/Repository.cs deleted file mode 100644 index e5bdaf414e..0000000000 --- a/build/tasks/BuildGraph/Repository.cs +++ /dev/null @@ -1,33 +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.Collections.Generic; -using System.Diagnostics; -using System.Linq; - -namespace RepoTools.BuildGraph -{ - [DebuggerDisplay("{Name}")] - public class Repository : IEquatable - { - public Repository(string name) - { - Name = name; - } - - public string Name { get; private set; } - - public string RootDir { get; set; } - - public IList Projects { get; } = new List(); - - public IList SupportProjects { get; } = new List(); - - public IEnumerable AllProjects => Projects.Concat(SupportProjects); - - public bool Equals(Repository other) => string.Equals(Name, other.Name, StringComparison.OrdinalIgnoreCase); - - public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Name); - } -} diff --git a/build/tasks/BuildGraph/TopologicalSort.cs b/build/tasks/BuildGraph/TopologicalSort.cs deleted file mode 100644 index 161a9913d7..0000000000 --- a/build/tasks/BuildGraph/TopologicalSort.cs +++ /dev/null @@ -1,46 +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.Collections.Generic; -using System.Linq; - -namespace RepoTools.BuildGraph -{ - public class TopologicalSort : IComparer - { - public static readonly TopologicalSort Instance = new TopologicalSort(); - - public int Compare(GraphNode x, GraphNode y) - { - var xScore = GetOrder(x); - var yScore = GetOrder(y); - return xScore.CompareTo(yScore); - } - - public static int GetOrder(GraphNode node) - { - var visited = new List(); - return GetOrder(node, visited); - } - - private static int GetOrder(GraphNode node, List visited) - { - if (visited.Contains(node)) - { - var cycle = string.Join(" -> ", visited.Select(v => v.Repository.Name)); - throw new Exception($"Cycle detected in the build graph: {cycle} -> {node.Repository.Name}."); - } - - var score = 0; - visited.Add(node); - foreach (var dependentNode in node.Incoming) - { - score = Math.Max(score, GetOrder(dependentNode, visited)); - } - visited.RemoveAt(visited.Count - 1); - - return score + 1; - } - } -} diff --git a/build/tasks/CheckRepoGraph.cs b/build/tasks/CheckRepoGraph.cs deleted file mode 100644 index eecd32580e..0000000000 --- a/build/tasks/CheckRepoGraph.cs +++ /dev/null @@ -1,223 +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.Collections; -using System.Collections.Generic; -using System.Linq; -using System.IO; -using System.Text; -using System.Threading; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using NuGet.Frameworks; -using NuGet.Packaging.Core; -using NuGet.Versioning; -using RepoTools.BuildGraph; -using RepoTasks.ProjectModel; -using RepoTasks.Utilities; - -namespace RepoTasks -{ - public class CheckRepoGraph : Task, ICancelableTask - { - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - - [Required] - public ITaskItem[] Solutions { get; set; } - - [Required] - public ITaskItem[] Artifacts { get; set; } - - [Required] - public ITaskItem[] Repositories { get; set; } - - [Required] - public string Properties { get; set; } - - public void Cancel() - { - _cts.Cancel(); - } - - public override bool Execute() - { - var packageArtifacts = Artifacts.Select(ArtifactInfo.Parse) - .OfType() - .Where(p => !p.IsSymbolsArtifact) - .ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase); - - var factory = new SolutionInfoFactory(Log, BuildEngine5); - var props = MSBuildListSplitter.GetNamedProperties(Properties); - - if (!props.TryGetValue("Configuration", out var defaultConfig)) - { - defaultConfig = "Debug"; - } - - var solutions = factory.Create(Solutions, props, defaultConfig, _cts.Token).OrderBy(f => f.Directory).ToList(); - Log.LogMessage($"Found {solutions.Count} and {solutions.Sum(p => p.Projects.Count)} projects"); - - if (_cts.IsCancellationRequested) - { - return false; - } - - var repoGraph = new AdjacencyMatrix(solutions.Count); - var packageToProjectMap = new Dictionary(); - - for (var i = 0; i < solutions.Count; i++) - { - var sln = repoGraph[i] = solutions[i]; - - foreach (var proj in sln.Projects) - { - if (!proj.IsPackable - || proj.FullPath.Contains("samples") - || proj.FullPath.Contains("tools/Microsoft.VisualStudio.Web.CodeGeneration.Design")) - { - continue; - } - - var id = new PackageIdentity(proj.PackageId, new NuGetVersion(proj.PackageVersion)); - - if (packageToProjectMap.TryGetValue(id, out var otherProj)) - { - Log.LogError($"Both {proj.FullPath} and {otherProj.FullPath} produce {id}"); - continue; - } - - packageToProjectMap.Add(id, proj); - } - - var sharedSrc = Path.Combine(sln.Directory, "shared"); - if (Directory.Exists(sharedSrc)) - { - foreach (var dir in Directory.GetDirectories(sharedSrc, "*.Sources")) - { - var id = GetDirectoryName(dir); - var artifactInfo = packageArtifacts[id]; - var sharedSrcProj = new ProjectInfo(dir, - Array.Empty(), - Array.Empty(), - true, - artifactInfo.PackageInfo.Id, - artifactInfo.PackageInfo.Version.ToNormalizedString()); - sharedSrcProj.SolutionInfo = sln; - var identity = new PackageIdentity(artifactInfo.PackageInfo.Id, artifactInfo.PackageInfo.Version); - packageToProjectMap.Add(identity, sharedSrcProj); - } - } - } - - if (Log.HasLoggedErrors) - { - return false; - } - - for (var i = 0; i < solutions.Count; i++) - { - var src = repoGraph[i]; - - foreach (var proj in src.Projects) - { - if (!proj.IsPackable - || proj.FullPath.Contains("samples")) - { - continue; - } - - foreach (var dep in proj.Frameworks.SelectMany(f => f.Dependencies.Values)) - { - if (packageToProjectMap.TryGetValue(new PackageIdentity(dep.Id, new NuGetVersion(dep.Version)), out var target)) - { - var j = repoGraph.FindIndex(target.SolutionInfo); - repoGraph.SetLink(i, j); - } - } - - foreach (var toolDep in proj.Tools) - { - if (packageToProjectMap.TryGetValue(new PackageIdentity(toolDep.Id, new NuGetVersion(toolDep.Version)), out var target)) - { - var j = repoGraph.FindIndex(target.SolutionInfo); - repoGraph.SetLink(i, j); - } - } - } - } - - var repos = Repositories.ToDictionary(i => i.ItemSpec, i => i, StringComparer.OrdinalIgnoreCase); - - for (var i = 0; i < repoGraph.Count; i++) - { - var src = repoGraph[i]; - var repoName = GetDirectoryName(src.Directory); - var repo = repos[repoName]; - - var policy = Enum.Parse(repo.GetMetadata("PatchPolicy")); - - if ((policy & PatchPolicy.AlwaysUpdate) != 0 && !src.IsPatching) - { - Log.LogError($"{repoName} is not currently set to patch, but it should because the policy is set to always include this in servicing updates. Update the configuration in submodule.props."); - continue; - } - - var srcShouldCascade = (policy & PatchPolicy.CascadeVersions) != 0; - for (var j = 0; j < repoGraph.Count; j++) - { - if (j == i) continue; - if (repoGraph.HasLink(i, j)) - { - var target = repoGraph[j]; - var targetRepoName = GetDirectoryName(target.Directory); - var targetRepo = repos[targetRepoName]; - - if (srcShouldCascade && !src.IsPatching && target.IsPatching) - { - Log.LogError($"{repoName} should be patching because it depend on {targetRepoName} and its patch policy is to cascade version changes. Update the configuration in submodule.props."); - } - } - } - } - - return !Log.HasLoggedErrors; - } - - private static string GetDirectoryName(string path) - => Path.GetFileName(path.TrimEnd(new[] { '\\', '/' })); - - private class AdjacencyMatrix - { - private readonly bool[,] _matrix; - private readonly SolutionInfo[] _items; - - public AdjacencyMatrix(int size) - { - _matrix = new bool[size, size]; - _items = new SolutionInfo[size]; - Count = size; - } - - public SolutionInfo this[int idx] - { - get => _items[idx]; - set => _items[idx] = value; - } - - public int FindIndex(SolutionInfo item) - { - return Array.FindIndex(_items, t => t.Equals(item)); - } - - public int Count { get; } - - public bool HasLink(int source, int target) => _matrix[source, target]; - - public void SetLink(int source, int target) - { - _matrix[source, target] = true; - } - } - } -} diff --git a/build/tasks/CodeGen/DirectedGraphXml.cs b/build/tasks/CodeGen/DirectedGraphXml.cs deleted file mode 100644 index e90d66ca6b..0000000000 --- a/build/tasks/CodeGen/DirectedGraphXml.cs +++ /dev/null @@ -1,42 +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.Xml.Linq; - -namespace RepoTasks.CodeGen -{ - class DirectedGraphXml - { - private readonly XNamespace _ns = "http://schemas.microsoft.com/vs/2009/dgml"; - private readonly XDocument _doc; - private readonly XElement _nodes; - private readonly XElement _links; - - public DirectedGraphXml() - { - _doc = new XDocument(new XElement(_ns + "DirectedGraph")); - _nodes = new XElement(_ns + "Nodes"); - _links = new XElement(_ns + "Links"); - _doc.Root.Add(_nodes); - _doc.Root.Add(_links); - } - - public void AddNode(string id) - { - _nodes.Add(new XElement(_ns + "Node", new XAttribute("Id", id), new XAttribute("Label", id))); - } - - public void AddLink(string source, string target) - { - _links.Add(new XElement(_ns + "Link", - new XAttribute("Source", source), - new XAttribute("Target", target))); - } - - public void Save(string path) - { - _doc.Save(path); - } - } -} diff --git a/build/tasks/CodeGen/GenerateSubmoduleGraph.cs b/build/tasks/CodeGen/GenerateSubmoduleGraph.cs deleted file mode 100644 index 7940b5cba2..0000000000 --- a/build/tasks/CodeGen/GenerateSubmoduleGraph.cs +++ /dev/null @@ -1,226 +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.Collections; -using System.Collections.Generic; -using System.Linq; -using System.IO; -using System.Text; -using System.Threading; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using NuGet.Frameworks; -using NuGet.Versioning; -using RepoTools.BuildGraph; -using RepoTasks.ProjectModel; -using RepoTasks.Utilities; -using RepoTasks.CodeGen; -using NuGet.Packaging.Core; - -namespace RepoTasks -{ - public class GenerateSubmoduleGraph : Task, ICancelableTask - { - private readonly CancellationTokenSource _cts = new CancellationTokenSource(); - - /// - /// Repositories that we are building new versions of. - /// - [Required] - public ITaskItem[] Solutions { get; set; } - - [Required] - public ITaskItem[] Artifacts { get; set; } - - [Required] - public ITaskItem[] Repositories { get; set; } - - [Required] - public string RepositoryRoot { get; set; } - - [Required] - public string Properties { get; set; } - - public void Cancel() - { - _cts.Cancel(); - } - - public override bool Execute() - { - var packageArtifacts = Artifacts.Select(ArtifactInfo.Parse) - .OfType() - .Where(p => !p.IsSymbolsArtifact) - .ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase); - - var factory = new SolutionInfoFactory(Log, BuildEngine5); - var props = MSBuildListSplitter.GetNamedProperties(Properties); - - Log.LogMessage(MessageImportance.High, $"Beginning cross-repo analysis on {Solutions.Length} solutions. Hang tight..."); - - if (!props.TryGetValue("Configuration", out var defaultConfig)) - { - defaultConfig = "Debug"; - } - - var solutions = factory.Create(Solutions, props, defaultConfig, _cts.Token).OrderBy(f => f.Directory).ToList(); - Log.LogMessage($"Found {solutions.Count} and {solutions.Sum(p => p.Projects.Count)} projects"); - - if (_cts.IsCancellationRequested) - { - return false; - } - - return GenerateGraph(packageArtifacts, solutions); - } - - private bool GenerateGraph(IDictionary packageArtifacts, IReadOnlyList solutions) - { - var repoGraph = new AdjacencyMatrix(solutions.Count); - var packageToProjectMap = new Dictionary(); - - for (var i = 0; i < solutions.Count; i++) - { - var sln = repoGraph[i] = solutions[i]; - - foreach (var proj in sln.Projects) - { - if (!proj.IsPackable || proj.FullPath.Contains("samples")) - { - continue; - } - - var id = new PackageIdentity(proj.PackageId, new NuGetVersion(proj.PackageVersion)); - - if (packageToProjectMap.TryGetValue(id, out var otherProj)) - { - Log.LogError($"Both {proj.FullPath} and {otherProj.FullPath} produce {id}"); - continue; - } - - packageToProjectMap.Add(id, proj); - } - - var sharedSrc = Path.Combine(sln.Directory, "shared"); - if (Directory.Exists(sharedSrc)) - { - foreach (var dir in Directory.GetDirectories(sharedSrc, "*.Sources")) - { - var id = Path.GetFileName(dir); - var artifactInfo = packageArtifacts[id]; - var sharedSrcProj = new ProjectInfo(dir, - Array.Empty(), - Array.Empty(), - true, - artifactInfo.PackageInfo.Id, - artifactInfo.PackageInfo.Version.ToNormalizedString()); - sharedSrcProj.SolutionInfo = sln; - var identity = new PackageIdentity(artifactInfo.PackageInfo.Id, artifactInfo.PackageInfo.Version); - packageToProjectMap.Add(identity, sharedSrcProj); - } - } - } - - if (Log.HasLoggedErrors) - { - return false; - } - - for (var i = 0; i < solutions.Count; i++) - { - var sln = repoGraph[i]; - - var deps = from proj in sln.Projects - from tfm in proj.Frameworks - from dep in tfm.Dependencies.Values - select dep; - - foreach (var dep in deps) - { - if (packageToProjectMap.TryGetValue(new PackageIdentity(dep.Id, new NuGetVersion(dep.Version)), out var target)) - { - var j = repoGraph.FindIndex(target.SolutionInfo); - repoGraph.SetLink(i, j); - } - } - - var toolDeps = from proj in sln.Projects - from tool in proj.Tools - select tool; - - foreach (var toolDep in toolDeps) - { - if (packageToProjectMap.TryGetValue(new PackageIdentity(toolDep.Id, new NuGetVersion(toolDep.Version)), out var target)) - { - var j = repoGraph.FindIndex(target.SolutionInfo); - repoGraph.SetLink(i, j); - } - } - } - - CreateDgml(repoGraph); - return !Log.HasLoggedErrors; - } - - - private void CreateDgml(AdjacencyMatrix repoGraph) - { - var dgml = new DirectedGraphXml(); - - for (var i = 0; i < repoGraph.Count; i++) - { - var node = repoGraph[i]; - var nodeName = Path.GetFileName(node.Directory); - dgml.AddNode(nodeName); - - for (var j = 0; j < repoGraph.Count; j++) - { - if (j == i) continue; - if (repoGraph.HasLink(i, j)) - { - var target = repoGraph[j]; - var targetName = Path.GetFileName(target.Directory); - dgml.AddLink(nodeName, targetName); - } - } - } - - dgml.Save(Path.Combine(RepositoryRoot, "modules", "SubmoduleGraph.dgml")); - } - - private class AdjacencyMatrix - { - private readonly bool[,] _matrix; - private readonly SolutionInfo[] _items; - - public AdjacencyMatrix(int size) - { - _matrix = new bool[size, size]; - _items = new SolutionInfo[size]; - Count = size; - } - - public SolutionInfo this[int idx] - { - get => _items[idx]; - set => _items[idx] = value; - } - - public int FindIndex(SolutionInfo item) - { - return Array.FindIndex(_items, t => t.Equals(item)); - } - - public int Count { get; } - - public bool HasLink(int source, int target) => _matrix[source, target]; - - public void SetLink(int source, int target) - { - _matrix[source, target] = true; - } - } - } -} diff --git a/build/tasks/CodeGen/RepositoryProject.cs b/build/tasks/CodeGen/RepositoryProject.cs deleted file mode 100644 index 1cb3b76391..0000000000 --- a/build/tasks/CodeGen/RepositoryProject.cs +++ /dev/null @@ -1,46 +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.Text; -using Microsoft.Build.Construction; -using Microsoft.Build.Evaluation; - -namespace RepoTasks.CodeGen -{ - class RepositoryProject - { - private readonly ProjectRootElement _doc; - - public RepositoryProject(string repositoryRoot) - { - _doc = ProjectRootElement.Create(NewProjectFileOptions.None); - var import = _doc.CreateImportElement(@"$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"); - var propGroup = _doc.AddPropertyGroup(); - if (repositoryRoot[repositoryRoot.Length - 1] != '\\') - { - repositoryRoot += '\\'; - } - propGroup.AddProperty("RepositoryRoot", repositoryRoot); - _doc.AddItemGroup(); - _doc.PrependChild(import); - _doc.AddImport(@"$(MSBuildToolsPath)\Microsoft.Common.targets"); - } - - public void AddProjectReference(string path) - { - _doc.AddItem("ProjectReference", path); - } - - public void AddProperty(string name, string value) - { - _doc.AddProperty(name, value); - } - - public void Save(string filePath) - { - _doc.Save(filePath, Encoding.UTF8); - } - } -} diff --git a/build/tasks/ProjectModel/DotNetCliReferenceInfo.cs b/build/tasks/ProjectModel/DotNetCliReferenceInfo.cs deleted file mode 100644 index c490dab999..0000000000 --- a/build/tasks/ProjectModel/DotNetCliReferenceInfo.cs +++ /dev/null @@ -1,24 +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; - -namespace RepoTasks.ProjectModel -{ - internal class DotNetCliReferenceInfo - { - public DotNetCliReferenceInfo(string id, string version) - { - if (string.IsNullOrEmpty(id)) - { - throw new ArgumentException(nameof(id)); - } - - Id = id; - Version = version; - } - - public string Id { get; } - public string Version { get; } - } -} diff --git a/build/tasks/ProjectModel/PackageInfo.cs b/build/tasks/ProjectModel/PackageInfo.cs deleted file mode 100644 index bb499a1b21..0000000000 --- a/build/tasks/ProjectModel/PackageInfo.cs +++ /dev/null @@ -1,44 +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.Collections.Generic; -using System.IO; -using NuGet.Frameworks; -using NuGet.Packaging; -using NuGet.Versioning; - -namespace RepoTasks.ProjectModel -{ - internal class PackageInfo - { - public PackageInfo(string id, - NuGetVersion version, - IReadOnlyList dependencyGroups, - string source, - string packageType = "Dependency") - { - if (string.IsNullOrEmpty(id)) - { - throw new ArgumentException(nameof(id)); - } - - Id = id; - Version = version ?? throw new ArgumentNullException(nameof(version)); - PackageType = packageType; - Source = source; - DependencyGroups = dependencyGroups ?? Array.Empty(); - } - - public string Id { get; } - public NuGetVersion Version { get; } - public string PackageType { get; } - /// - /// Can be a https feed or a file path. May be null. - /// - public string Source { get; } - public IReadOnlyList DependencyGroups { get; } - - public override string ToString() => $"{Id}/{Version}"; - } -} diff --git a/build/tasks/ProjectModel/PackageReferenceInfo.cs b/build/tasks/ProjectModel/PackageReferenceInfo.cs deleted file mode 100644 index cea7d566ef..0000000000 --- a/build/tasks/ProjectModel/PackageReferenceInfo.cs +++ /dev/null @@ -1,27 +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.Collections.Generic; - -namespace RepoTasks.ProjectModel -{ - internal class PackageReferenceInfo - { - public PackageReferenceInfo(string id, string version, bool isImplicitlyDefined) - { - if (string.IsNullOrEmpty(id)) - { - throw new ArgumentException(nameof(id)); - } - - Id = id; - Version = version; - IsImplicitlyDefined = isImplicitlyDefined; - } - - public string Id { get; } - public string Version { get; } - public bool IsImplicitlyDefined { get; } - } -} diff --git a/build/tasks/ProjectModel/PatchPolicy.cs b/build/tasks/ProjectModel/PatchPolicy.cs deleted file mode 100644 index a28451cabb..0000000000 --- a/build/tasks/ProjectModel/PatchPolicy.cs +++ /dev/null @@ -1,31 +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.Collections.Generic; -using System.Linq; -using NuGet.Frameworks; - -namespace RepoTasks.ProjectModel -{ - [Flags] - internal enum PatchPolicy - { - /// - /// Only produce new package versions if there were changes to product code. - /// - ProductChangesOnly = 1 << 0, - - /// - /// Packages should update in every patch. - /// - AlwaysUpdate = 1 << 1, - - /// - /// Produce new package versions if there were changes to product code, or if one of the package dependencies has updated. - /// - CascadeVersions = 1 << 2, - - AlwaysUpdateAndCascadeVersions = CascadeVersions | AlwaysUpdate, - } -} diff --git a/build/tasks/ProjectModel/ProjectFrameworkInfo.cs b/build/tasks/ProjectModel/ProjectFrameworkInfo.cs deleted file mode 100644 index 35a212f9a1..0000000000 --- a/build/tasks/ProjectModel/ProjectFrameworkInfo.cs +++ /dev/null @@ -1,22 +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.Collections.Generic; -using System.Linq; -using NuGet.Frameworks; - -namespace RepoTasks.ProjectModel -{ - internal class ProjectFrameworkInfo - { - public ProjectFrameworkInfo(NuGetFramework targetFramework, IReadOnlyDictionary dependencies) - { - TargetFramework = targetFramework ?? throw new ArgumentNullException(nameof(targetFramework)); - Dependencies = dependencies ?? throw new ArgumentNullException(nameof(dependencies)); - } - - public NuGetFramework TargetFramework { get; } - public IReadOnlyDictionary Dependencies { get; } - } -} diff --git a/build/tasks/ProjectModel/ProjectInfo.cs b/build/tasks/ProjectModel/ProjectInfo.cs deleted file mode 100644 index 4f4b7a3a9c..0000000000 --- a/build/tasks/ProjectModel/ProjectInfo.cs +++ /dev/null @@ -1,47 +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.Collections.Generic; -using System.IO; - -namespace RepoTasks.ProjectModel -{ - internal class ProjectInfo - { - public ProjectInfo(string fullPath, - IReadOnlyList frameworks, - IReadOnlyList tools, - bool isPackable, - string packageId, - string packageVersion) - { - if (!Path.IsPathRooted(fullPath)) - { - throw new ArgumentException("Path must be absolute", nameof(fullPath)); - } - - Frameworks = frameworks ?? throw new ArgumentNullException(nameof(frameworks)); - Tools = tools ?? throw new ArgumentNullException(nameof(tools)); - - FullPath = fullPath; - FileName = Path.GetFileName(fullPath); - Directory = Path.GetDirectoryName(FullPath); - IsPackable = isPackable; - PackageId = packageId; - PackageVersion = packageVersion; - } - - public string FullPath { get; } - public string FileName { get; } - public string Directory { get; } - public string PackageId { get; } - public string PackageVersion { get; } - public bool IsPackable { get; } - - public SolutionInfo SolutionInfo { get; set; } - - public IReadOnlyList Frameworks { get; } - public IReadOnlyList Tools { get; } - } -} diff --git a/build/tasks/ProjectModel/ProjectInfoFactory.cs b/build/tasks/ProjectModel/ProjectInfoFactory.cs deleted file mode 100644 index 40592f30fa..0000000000 --- a/build/tasks/ProjectModel/ProjectInfoFactory.cs +++ /dev/null @@ -1,137 +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.Collections.Generic; -using System.IO; -using System.Linq; -using Microsoft.Build.Construction; -using Microsoft.Build.Evaluation; -using Microsoft.Build.Execution; -using NuGet.Frameworks; -using RepoTasks.Utilities; -using Microsoft.Build.Utilities; - -namespace RepoTasks.ProjectModel -{ - internal class ProjectInfoFactory - { - private readonly TaskLoggingHelper _logger; - - public ProjectInfoFactory(TaskLoggingHelper logger) - { - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); - } - - public ProjectInfo Create(string path, ProjectCollection projectCollection) - { - var project = GetProject(path, projectCollection); - var instance = project.CreateProjectInstance(ProjectInstanceSettings.ImmutableWithFastItemLookup); - - var targetFrameworks = instance.GetPropertyValue("TargetFrameworks"); - var targetFramework = instance.GetPropertyValue("TargetFramework"); - - var frameworks = new List(); - if (!string.IsNullOrEmpty(targetFrameworks) && string.IsNullOrEmpty(targetFramework)) - { - // multi targeting - foreach (var tfm in targetFrameworks.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) - { - project.SetGlobalProperty("TargetFramework", tfm); - var innerBuild = project.CreateProjectInstance(ProjectInstanceSettings.ImmutableWithFastItemLookup); - - var tfmInfo = new ProjectFrameworkInfo(NuGetFramework.Parse(tfm), GetDependencies(innerBuild)); - - frameworks.Add(tfmInfo); - } - - project.RemoveGlobalProperty("TargetFramework"); - } - else if (!string.IsNullOrEmpty(targetFramework)) - { - var tfmInfo = new ProjectFrameworkInfo(NuGetFramework.Parse(targetFramework), GetDependencies(instance)); - - frameworks.Add(tfmInfo); - } - - var projectDir = Path.GetDirectoryName(path); - - var tools = GetTools(instance).ToArray(); - bool.TryParse(instance.GetPropertyValue("IsPackable"), out var isPackable); - - if (isPackable) - { - // the default packable setting is disabled for projects referencing this package. - isPackable = !frameworks.SelectMany(f => f.Dependencies.Keys).Any(d => d.Equals("Microsoft.NET.Test.Sdk", StringComparison.OrdinalIgnoreCase)); - } - - var packageId = instance.GetPropertyValue("PackageId"); - var packageVersion = instance.GetPropertyValue("PackageVersion"); - - return new ProjectInfo(path, - frameworks, - tools, - isPackable, - packageId, - packageVersion); - } - - private static object _projLock = new object(); - - private static Project GetProject(string path, ProjectCollection projectCollection) - { - var projects = projectCollection.GetLoadedProjects(path); - foreach(var proj in projects) - { - if (proj.GetPropertyValue("DesignTimeBuild") == "true") - { - return proj; - } - } - - var xml = ProjectRootElement.Open(path, projectCollection); - var globalProps = new Dictionary() - { - ["DesignTimeBuild"] = "true", - // Isolate the project from post-restore side effects - ["ExcludeRestorePackageImports"] = "true", - }; - - var project = new Project(xml, - globalProps, - toolsVersion: "15.0", - projectCollection: projectCollection) - { - IsBuildEnabled = false - }; - - return project; - } - - private IReadOnlyDictionary GetDependencies(ProjectInstance project) - { - var references = new Dictionary(StringComparer.OrdinalIgnoreCase); - foreach (var item in project.GetItems("PackageReference")) - { - bool.TryParse(item.GetMetadataValue("IsImplicitlyDefined"), out var isImplicit); - - var info = new PackageReferenceInfo(item.EvaluatedInclude, item.GetMetadataValue("Version"), isImplicit); - - if (references.ContainsKey(info.Id)) - { - _logger.LogKoreBuildWarning(project.ProjectFileLocation.File, KoreBuildErrors.DuplicatePackageReference, $"Found a duplicate PackageReference for {info.Id}. Restore results may be unpredictable."); - } - - references[info.Id] = info; - } - - return references; - } - - private static IEnumerable GetTools(ProjectInstance project) - { - return project.GetItems("DotNetCliToolReference").Select(item => - new DotNetCliReferenceInfo(item.EvaluatedInclude, item.GetMetadataValue("Version"))); - } - } -} diff --git a/build/tasks/ProjectModel/SolutionInfo.cs b/build/tasks/ProjectModel/SolutionInfo.cs deleted file mode 100644 index cacc521367..0000000000 --- a/build/tasks/ProjectModel/SolutionInfo.cs +++ /dev/null @@ -1,44 +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.Collections.Generic; -using System.IO; - -namespace RepoTasks.ProjectModel -{ - internal class SolutionInfo - { - public SolutionInfo(string fullPath, string configName, IReadOnlyList projects, bool shouldBuild, bool isPatching) - { - if (string.IsNullOrEmpty(fullPath)) - { - throw new ArgumentException(nameof(fullPath)); - } - - if (string.IsNullOrEmpty(configName)) - { - throw new ArgumentException(nameof(configName)); - } - - FullPath = fullPath; - Directory = Path.GetDirectoryName(fullPath); - ConfigName = configName; - Projects = projects ?? throw new ArgumentNullException(nameof(projects)); - ShouldBuild = shouldBuild; - IsPatching = isPatching; - foreach (var proj in Projects) - { - proj.SolutionInfo = this; - } - } - - public string FullPath { get; } - public string Directory { get; } - public string ConfigName { get; } - public IReadOnlyList Projects { get; } - public bool ShouldBuild { get; } - public bool IsPatching { get; } - public PatchPolicy PatchPolicy { get; set; } - } -} diff --git a/build/tasks/ProjectModel/SolutionInfoFactory.cs b/build/tasks/ProjectModel/SolutionInfoFactory.cs deleted file mode 100644 index aac69cff08..0000000000 --- a/build/tasks/ProjectModel/SolutionInfoFactory.cs +++ /dev/null @@ -1,136 +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.Collections.Concurrent; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Build.Construction; -using Microsoft.Build.Evaluation; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; -using RepoTasks.Utilities; - -namespace RepoTasks.ProjectModel -{ - internal class SolutionInfoFactory - { - private readonly TaskLoggingHelper _logger; - private readonly IBuildEngine4 _buildEngine; - - public SolutionInfoFactory(TaskLoggingHelper logger, IBuildEngine4 buildEngine) - { - _logger = logger; - _buildEngine = buildEngine; - } - - public IReadOnlyList Create(IEnumerable solutionItems, IDictionary properties, string defaultConfig, CancellationToken ct) - { - var timer = Stopwatch.StartNew(); - - var solutions = new ConcurrentBag(); - - Parallel.ForEach(solutionItems, solution => - { - if (ct.IsCancellationRequested) - { - return; - } - - var solutionFile = solution.ItemSpec.Replace('\\', '/'); - var solutionProps = new Dictionary(properties, StringComparer.OrdinalIgnoreCase); - foreach (var prop in MSBuildListSplitter.GetNamedProperties(solution.GetMetadata("AdditionalProperties"))) - { - solutionProps[prop.Key] = prop.Value; - } - - if (!solutionProps.TryGetValue("Configuration", out var configName)) - { - solutionProps["Configuration"] = configName = defaultConfig; - } - - var key = $"SlnInfo:{solutionFile}:{configName}"; - var obj = _buildEngine.GetRegisteredTaskObject(key, RegisteredTaskObjectLifetime.Build); - - if (obj is SolutionInfo cachedSlnInfo) - { - solutions.Add(cachedSlnInfo); - return; - } - - _logger.LogMessage($"Analyzing {solutionFile} ({configName})"); - var projects = new ConcurrentBag(); - var projectFiles = GetProjectsForSolutionConfig(solutionFile, configName); - using (var projCollection = new ProjectCollection(solutionProps) { IsBuildEnabled = false }) - { - Parallel.ForEach(projectFiles, projectFile => - { - if (ct.IsCancellationRequested) - { - return; - } - - try - { - projects.Add(new ProjectInfoFactory(_logger).Create(projectFile, projCollection)); - } - catch (Exception ex) - { - _logger.LogErrorFromException(ex); - } - }); - } - - bool.TryParse(solution.GetMetadata("Build"), out var shouldBuild); - bool.TryParse(solution.GetMetadata("IsPatching"), out var isPatching); - - var solutionInfo = new SolutionInfo( - solutionFile, - configName, - projects.ToArray(), - shouldBuild, - isPatching); - - _buildEngine.RegisterTaskObject(key, solutionInfo, RegisteredTaskObjectLifetime.Build, allowEarlyCollection: true); - - solutions.Add(solutionInfo); - }); - - timer.Stop(); - _logger.LogMessage(MessageImportance.High, $"Finished design-time build in {timer.ElapsedMilliseconds}ms"); - return solutions.ToArray(); - } - - private IList GetProjectsForSolutionConfig(string filePath, string configName) - { - var sln = SolutionFile.Parse(filePath); - - if (string.IsNullOrEmpty(configName)) - { - configName = sln.GetDefaultConfigurationName(); - } - - var projects = new List(); - - var config = sln.SolutionConfigurations.FirstOrDefault(c => c.ConfigurationName == configName); - if (config == null) - { - throw new InvalidOperationException($"A solution configuration by the name of '{configName}' was not found in '{filePath}'"); - } - - foreach (var project in sln.ProjectsInOrder - .Where(p => - p.ProjectType == SolutionProjectType.KnownToBeMSBuildFormat // skips solution folders - && p.ProjectConfigurations.TryGetValue(config.FullName, out var projectConfig) - && projectConfig.IncludeInBuild)) - { - projects.Add(project.AbsolutePath.Replace('\\', '/')); - } - - return projects; - } - } -} diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks index 1339fcba27..5339c01d01 100644 --- a/build/tasks/RepoTasks.tasks +++ b/build/tasks/RepoTasks.tasks @@ -4,13 +4,10 @@ - - - diff --git a/build/tasks/Utilities/ArtifactInfo.cs b/build/tasks/Utilities/ArtifactInfo.cs deleted file mode 100644 index 7116daae48..0000000000 --- a/build/tasks/Utilities/ArtifactInfo.cs +++ /dev/null @@ -1,70 +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.Linq; -using NuGet.Frameworks; -using NuGet.Packaging; -using NuGet.Packaging.Core; -using NuGet.Versioning; -using Microsoft.Build.Framework; -using RepoTasks.ProjectModel; - -namespace RepoTasks.Utilities -{ - internal abstract class ArtifactInfo - { - public static ArtifactInfo Parse(ITaskItem item) - { - ArtifactInfo info; - switch (item.GetMetadata("ArtifactType").ToLowerInvariant()) - { - case "nugetpackage": - info = new Package { PackageInfo = GetPackageInfo(item) }; - break; - case "nugetsymbolspackage": - info = new Package { PackageInfo = GetPackageInfo(item), IsSymbolsArtifact = true }; - break; - default: - return UnknownType.Singleton; - } - - info.RepositoryRoot = item.GetMetadata("RepositoryRoot")?.TrimEnd(new [] { '\\', '/' }); - - if (!string.IsNullOrEmpty(info.RepositoryRoot)) - { - info.RepoName = Path.GetFileName(info.RepositoryRoot); - } - - return info; - } - - public string RepositoryRoot { get; private set; } - public string RepoName { get; private set; } - - public class UnknownType : ArtifactInfo - { - private UnknownType() { } - public static UnknownType Singleton { get; } = new UnknownType(); - } - - public class Package : ArtifactInfo - { - public PackageInfo PackageInfo { get; set; } - public bool IsSymbolsArtifact { get; set; } - } - - private static PackageInfo GetPackageInfo(ITaskItem item) - { - return new PackageInfo( - item.GetMetadata("PackageId"), - NuGetVersion.Parse(item.GetMetadata("Version")), - string.IsNullOrEmpty(item.GetMetadata("TargetFramework")) - ? MSBuildListSplitter.SplitItemList(item.GetMetadata("TargetFramework")).Select(s => new PackageDependencyGroup(NuGetFramework.Parse(s), Array.Empty())).ToArray() - : new [] { new PackageDependencyGroup(NuGetFramework.Parse(item.GetMetadata("TargetFramework")), Array.Empty()) }, - Path.GetDirectoryName(item.ItemSpec), - item.GetMetadata("PackageType")); - } - } -} diff --git a/build/tasks/Utilities/KoreBuildErrors.cs b/build/tasks/Utilities/KoreBuildErrors.cs deleted file mode 100644 index 8386f9cf7f..0000000000 --- a/build/tasks/Utilities/KoreBuildErrors.cs +++ /dev/null @@ -1,31 +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. - -namespace RepoTasks.Utilities -{ - public static class KoreBuildErrors - { - public const string Prefix = "KRB"; - - // Typically used in repos in Directory.Build.targets - public const int PackagesHaveNotYetBeenPinned = 1001; - - // Warnings - public const int DotNetAssetVersionIsFloating = 2000; - public const int RepoVersionDoesNotMatchProjectVersion = 2001; - public const int RepoPackageVersionDoesNotMatchProjectPackageVersion = 2002; - public const int DuplicatePackageReference = 2003; - - // NuGet errors - public const int InvalidNuspecFile = 4001; - public const int PackageReferenceHasVersion = 4002; - public const int DotNetCliReferenceReferenceHasVersion = 4003; - public const int PackageVersionNotFoundInLineup = 4004; - public const int UndefinedExternalDependency = 4005; - public const int EmptyPackageReferenceVersion = 4006; - - // Other unknown errors - public const int PolicyFailedToApply = 5000; - public const int UnknownPolicyType = 5001; - } -} diff --git a/build/tasks/Utilities/LoggingExtensions.cs b/build/tasks/Utilities/LoggingExtensions.cs deleted file mode 100644 index 833edb1aa4..0000000000 --- a/build/tasks/Utilities/LoggingExtensions.cs +++ /dev/null @@ -1,26 +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 Microsoft.Build.Utilities; - -namespace RepoTasks.Utilities -{ - public static class LoggingExtensions - { - public static void LogKoreBuildError(this TaskLoggingHelper logger, int code, string message, params object[] messageArgs) - => LogKoreBuildError(logger, null, code, message, messageArgs: messageArgs); - - public static void LogKoreBuildError(this TaskLoggingHelper logger, string filename, int code, string message, params object[] messageArgs) - { - logger.LogError(null, KoreBuildErrors.Prefix + code, null, filename, 0, 0, 0, 0, message, messageArgs: messageArgs); - } - - public static void LogKoreBuildWarning(this TaskLoggingHelper logger, int code, string message, params object[] messageArgs) - => LogKoreBuildWarning(logger, null, code, message, messageArgs: messageArgs); - - public static void LogKoreBuildWarning(this TaskLoggingHelper logger, string filename, int code, string message, params object[] messageArgs) - { - logger.LogWarning(null, KoreBuildErrors.Prefix + code, null, filename, 0, 0, 0, 0, message, messageArgs: messageArgs); - } - } -} diff --git a/build/tasks/Utilities/MSBuildListSplitter.cs b/build/tasks/Utilities/MSBuildListSplitter.cs deleted file mode 100644 index de4ff8724b..0000000000 --- a/build/tasks/Utilities/MSBuildListSplitter.cs +++ /dev/null @@ -1,45 +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.Collections.Generic; -using System.Linq; - -namespace RepoTasks.Utilities -{ - internal static class MSBuildListSplitter - { - private static readonly char[] SemiColon = { ';' }; - - public static IEnumerable SplitItemList(string value) - { - return string.IsNullOrEmpty(value) - ? Enumerable.Empty() - : value.Split(SemiColon, StringSplitOptions.RemoveEmptyEntries); - } - - public static Dictionary GetNamedProperties(string input) - { - var values = new Dictionary(); - if (string.IsNullOrEmpty(input)) - { - return values; - } - - foreach (var item in input.Split(SemiColon, StringSplitOptions.RemoveEmptyEntries)) - { - var splitIdx = item.IndexOf('='); - if (splitIdx <= 0) - { - continue; - } - - var key = item.Substring(0, splitIdx).Trim(); - var value = item.Substring(splitIdx + 1); - values[key] = value; - } - - return values; - } - } -} diff --git a/global.json b/global.json index ac7ef8966b..bb204de353 100644 --- a/global.json +++ b/global.json @@ -3,6 +3,6 @@ "version": "2.2.100-preview2-009404" }, "msbuild-sdks": { - "Internal.AspNetCore.Sdk": "2.2.0-preview2-20181004.1" + "Internal.AspNetCore.Sdk": "2.2.0-preview2-20181004.6" } } diff --git a/scripts/UpdateBuildTools.ps1 b/scripts/UpdateBuildTools.ps1 index 9e2ac5541d..efcda1e03b 100755 --- a/scripts/UpdateBuildTools.ps1 +++ b/scripts/UpdateBuildTools.ps1 @@ -66,6 +66,7 @@ try { exit 0 } + Invoke-Block { git add "$RepoRoot/global.json" } Invoke-Block { git add "$RepoRoot/korebuild-lock.txt" } Invoke-Block { git add "$RepoRoot/build/dependencies.props" }