diff --git a/Directory.Build.props b/Directory.Build.props index b5cec47e8eb..41a8578cd5c 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,19 +3,37 @@ Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), AspNetCoreSettings.props))\AspNetCoreSettings.props" Condition=" '$(CI)' != 'true' AND '$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), AspNetCoreSettings.props))' != '' " /> - + + false + + + + + false + true + true + + + + true + https://raw.githubusercontent.com/aspnet/AspNetCore/2.0.0/LICENSE.txt + https://go.microsoft.com/fwlink/?LinkID=288859 + https://asp.net + true + 7.2 + Microsoft .NET Extensions https://github.com/aspnet/Extensions git $(MSBuildThisFileDirectory) - $(MSBuildThisFileDirectory)eng\AspNetCore.snk true true strict + MicrosoftAspNetCore $(MSBuildThisFileDirectory)artifacts\ $(MSBuildThisFileDirectory)artifacts\build\ $(MSBuildThisFileDirectory)src\Shared\src\ @@ -23,6 +41,7 @@ $(ArtifactsConfigurationDir)packages\ $(BasePackageOutputPath)product\ $(BasePackageOutputPath)internal\ + portable $([MSBuild]::MakeRelative($(RepositoryRoot), $(MSBuildProjectDirectory))) @@ -33,31 +52,23 @@ false true - true true true + - true - - true + + netcoreapp3.0 + $(DeveloperBuildTestTfms) + $(StandardTestTfms);net461 - - - - - - - - - diff --git a/Directory.Build.targets b/Directory.Build.targets index dff2e63c6e1..dc0fd164d85 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,17 +1,16 @@ - $(ProductPackageOutputPath) - $(InternalPackageOutputPath) - $(MicrosoftNETCoreAppPackageVersion) $(AssemblyName) - false + $(PackageId) + false true + $(IsProductComponent) @@ -35,7 +34,7 @@ - true + true false @@ -43,4 +42,11 @@ + + + + + $(ProductPackageOutputPath) + $(InternalPackageOutputPath) + diff --git a/Extensions.sln b/Extensions.sln index 26866a5e701..a58775cca58 100644 --- a/Extensions.sln +++ b/Extensions.sln @@ -29,14 +29,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{36617B EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Sources.Tests", "src\Shared\test\Microsoft.Extensions.Sources.Tests.csproj", "{33E57F0C-3CDB-4EB8-B6BE-6A0875B42EDE}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "testassets", "testassets", "{2C7E2059-8542-4BC8-A170-39F6B9EDE548}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ThrowingLibrary", "src\Shared\testassets\ThrowingLibrary\ThrowingLibrary.csproj", "{727D7A4D-49ED-4FBF-B713-1091191C78AD}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{7A597F60-480C-4BFF-A940-26094BB0CA62}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BaselineGenerator", "eng\tools\BaselineGenerator\BaselineGenerator.csproj", "{532F85C9-F589-40E7-814F-F0463A927788}" -EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Microsoft.Extensions.CommandLineUtils.Sources", "src\Shared\src\CommandLineUtils\Microsoft.Extensions.CommandLineUtils.Sources.shproj", "{00947D4A-C20E-46E3-90C3-6CD6BC87EE72}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestingUtils", "TestingUtils", "{3DBE2341-7244-4095-A60C-A0AF7E187C9B}" @@ -77,7 +69,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.FilePr EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.FileProviders.Embedded.Manifest.Task", "src\FileProviders\Manifest.MSBuildTask\src\Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.csproj", "{DB61A8BF-1340-4D6E-80A3-29D0E1F39F35}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Test", "src\FileProviders\Manifest.MSBuildTask\test\Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Test.csproj", "{EFE02002-DD70-4570-A5EF-9B4521771345}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Tests", "src\FileProviders\Manifest.MSBuildTask\test\Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Tests.csproj", "{EFE02002-DD70-4570-A5EF-9B4521771345}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.FileProviders.Physical", "src\FileProviders\Physical\src\Microsoft.Extensions.FileProviders.Physical.csproj", "{54E60C1B-DD8F-4407-B787-EEA4FECD7B27}" EndProject @@ -155,41 +147,41 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Option EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Logging", "Logging", "{36DFDB12-6055-43D9-8027-B052667AD34F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging", "src\logging\Logging\src\Microsoft.Extensions.Logging.csproj", "{C29CF488-733D-419D-B4E0-D45417EEEA2E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging", "src\Logging\Logging\src\Microsoft.Extensions.Logging.csproj", "{C29CF488-733D-419D-B4E0-D45417EEEA2E}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Abstractions", "src\logging\Logging.Abstractions\src\Microsoft.Extensions.Logging.Abstractions.csproj", "{6E8EA53E-19B0-46E8-84DF-D32FBC47966F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Abstractions", "src\Logging\Logging.Abstractions\src\Microsoft.Extensions.Logging.Abstractions.csproj", "{6E8EA53E-19B0-46E8-84DF-D32FBC47966F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Analyzers", "src\logging\Logging.Analyzers\src\Microsoft.Extensions.Logging.Analyzers.csproj", "{41DF3B4F-9E3C-4D4B-A824-FC5B2094A1C8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Analyzers", "src\Logging\Logging.Analyzers\src\Microsoft.Extensions.Logging.Analyzers.csproj", "{41DF3B4F-9E3C-4D4B-A824-FC5B2094A1C8}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Analyzer.Tests", "src\logging\Logging.Analyzers\test\Microsoft.Extensions.Logging.Analyzer.Tests.csproj", "{938990D7-422A-44B2-AA6C-1AE6F4FF2CB1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Analyzer.Tests", "src\Logging\Logging.Analyzers\test\Microsoft.Extensions.Logging.Analyzer.Tests.csproj", "{938990D7-422A-44B2-AA6C-1AE6F4FF2CB1}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.AzureAppServices", "src\logging\Logging.AzureAppServices\src\Microsoft.Extensions.Logging.AzureAppServices.csproj", "{91CC7F32-CEA6-4039-94EE-B1000DBE0DBB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.AzureAppServices", "src\Logging\Logging.AzureAppServices\src\Microsoft.Extensions.Logging.AzureAppServices.csproj", "{91CC7F32-CEA6-4039-94EE-B1000DBE0DBB}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.AzureAppServices.Tests", "src\logging\Logging.AzureAppServices\test\Microsoft.Extensions.Logging.AzureAppServices.Tests.csproj", "{92B4C424-DA96-464E-B9DA-4D3ECB4176ED}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.AzureAppServices.Tests", "src\Logging\Logging.AzureAppServices\test\Microsoft.Extensions.Logging.AzureAppServices.Tests.csproj", "{92B4C424-DA96-464E-B9DA-4D3ECB4176ED}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Configuration", "src\logging\Logging.Configuration\src\Microsoft.Extensions.Logging.Configuration.csproj", "{053B27BF-69AD-42F5-8841-F9F631DBB1BC}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Configuration", "src\Logging\Logging.Configuration\src\Microsoft.Extensions.Logging.Configuration.csproj", "{053B27BF-69AD-42F5-8841-F9F631DBB1BC}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Console", "src\logging\Logging.Console\src\Microsoft.Extensions.Logging.Console.csproj", "{BBE29F30-74A4-4504-8EE4-16D4DFDAA72D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Console", "src\Logging\Logging.Console\src\Microsoft.Extensions.Logging.Console.csproj", "{BBE29F30-74A4-4504-8EE4-16D4DFDAA72D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Debug", "src\logging\Logging.Debug\src\Microsoft.Extensions.Logging.Debug.csproj", "{ABEC8A89-AA53-4FBC-BB00-451A970CB1DD}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Debug", "src\Logging\Logging.Debug\src\Microsoft.Extensions.Logging.Debug.csproj", "{ABEC8A89-AA53-4FBC-BB00-451A970CB1DD}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.EventLog", "src\logging\Logging.EventLog\src\Microsoft.Extensions.Logging.EventLog.csproj", "{6D3F09ED-F295-4BD3-931A-2300CDAFBE42}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.EventLog", "src\Logging\Logging.EventLog\src\Microsoft.Extensions.Logging.EventLog.csproj", "{6D3F09ED-F295-4BD3-931A-2300CDAFBE42}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.EventSource", "src\logging\Logging.EventSource\src\Microsoft.Extensions.Logging.EventSource.csproj", "{2B1EE2B3-680C-4D4D-85BC-9FA68D0B7FFA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.EventSource", "src\Logging\Logging.EventSource\src\Microsoft.Extensions.Logging.EventSource.csproj", "{2B1EE2B3-680C-4D4D-85BC-9FA68D0B7FFA}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.EventSource.Tests", "src\logging\Logging.EventSource\test\Microsoft.Extensions.Logging.EventSource.Tests.csproj", "{642D2A25-A019-48A7-99D3-4F05E5B3B138}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.EventSource.Tests", "src\Logging\Logging.EventSource\test\Microsoft.Extensions.Logging.EventSource.Tests.csproj", "{642D2A25-A019-48A7-99D3-4F05E5B3B138}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Testing", "src\logging\Logging.Testing\src\Microsoft.Extensions.Logging.Testing.csproj", "{BEA4DCA4-E98A-4CFA-BFF3-C9F887CDB063}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Testing", "src\Logging\Logging.Testing\src\Microsoft.Extensions.Logging.Testing.csproj", "{BEA4DCA4-E98A-4CFA-BFF3-C9F887CDB063}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Testing.Tests", "src\logging\Logging.Testing\test\Microsoft.Extensions.Logging.Testing.Tests.csproj", "{A08DDDA1-1634-482C-8E79-1E0016D99A93}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Testing.Tests", "src\Logging\Logging.Testing\test\Microsoft.Extensions.Logging.Testing.Tests.csproj", "{A08DDDA1-1634-482C-8E79-1E0016D99A93}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.TraceSource", "src\logging\Logging.TraceSource\src\Microsoft.Extensions.Logging.TraceSource.csproj", "{53A480C7-4C90-400F-859C-9C5C70EE762E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.TraceSource", "src\Logging\Logging.TraceSource\src\Microsoft.Extensions.Logging.TraceSource.csproj", "{53A480C7-4C90-400F-859C-9C5C70EE762E}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{26D1BCE2-F638-4984-993D-6BF781E0C652}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp", "src\logging\samples\SampleApp\SampleApp.csproj", "{4904B307-625D-4E3B-B156-A833583ABAF1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp", "src\Logging\samples\SampleApp\SampleApp.csproj", "{4904B307-625D-4E3B-B156-A833583ABAF1}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Tests", "src\logging\test\Microsoft.Extensions.Logging.Tests.csproj", "{2042D452-29E5-41E8-B2C1-80EAD6F9C5E6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Logging.Tests", "src\Logging\test\Microsoft.Extensions.Logging.Tests.csproj", "{2042D452-29E5-41E8-B2C1-80EAD6F9C5E6}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Options.DataAnnotations", "src\Options\DataAnnotations\src\Microsoft.Extensions.Options.DataAnnotations.csproj", "{9BF9888F-8635-40A0-AC1E-02F2B04C9E59}" EndProject @@ -297,11 +289,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "JSInterop", "JSInterop", "{ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop", "src\JSInterop\Microsoft.JSInterop\src\Microsoft.JSInterop.csproj", "{6D3807BD-28A8-4B7C-92D2-8A72E1522398}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop.Test", "src\JSInterop\Microsoft.JSInterop\test\Microsoft.JSInterop.Test.csproj", "{FD4896CE-E3FB-458E-8581-7552347C4260}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop.Tests", "src\JSInterop\Microsoft.JSInterop\test\Microsoft.JSInterop.Tests.csproj", "{FD4896CE-E3FB-458E-8581-7552347C4260}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop.JS", "src\JSInterop\Microsoft.JSInterop.JS\src\Microsoft.JSInterop.JS.csproj", "{76258B76-8CDD-471A-9D43-0815B712D668}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mono.WebAssembly.Interop", "src\JSInterop\Mono.WebAssembly.Interop\src\Mono.WebAssembly.Interop.csproj", "{89B01C5B-42DF-4E99-847E-354B8C5FBA6F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BaselineGenerator", "eng\tools\BaselineGenerator\BaselineGenerator.csproj", "{DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}" EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution @@ -424,30 +417,6 @@ Global {33E57F0C-3CDB-4EB8-B6BE-6A0875B42EDE}.Release|x64.Build.0 = Release|Any CPU {33E57F0C-3CDB-4EB8-B6BE-6A0875B42EDE}.Release|x86.ActiveCfg = Release|Any CPU {33E57F0C-3CDB-4EB8-B6BE-6A0875B42EDE}.Release|x86.Build.0 = Release|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Debug|x64.ActiveCfg = Debug|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Debug|x64.Build.0 = Debug|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Debug|x86.ActiveCfg = Debug|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Debug|x86.Build.0 = Debug|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Release|Any CPU.Build.0 = Release|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Release|x64.ActiveCfg = Release|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Release|x64.Build.0 = Release|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Release|x86.ActiveCfg = Release|Any CPU - {727D7A4D-49ED-4FBF-B713-1091191C78AD}.Release|x86.Build.0 = Release|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Debug|Any CPU.Build.0 = Debug|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Debug|x64.ActiveCfg = Debug|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Debug|x64.Build.0 = Debug|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Debug|x86.ActiveCfg = Debug|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Debug|x86.Build.0 = Debug|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Release|Any CPU.ActiveCfg = Release|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Release|Any CPU.Build.0 = Release|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Release|x64.ActiveCfg = Release|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Release|x64.Build.0 = Release|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Release|x86.ActiveCfg = Release|Any CPU - {532F85C9-F589-40E7-814F-F0463A927788}.Release|x86.Build.0 = Release|Any CPU {62EF7870-CA1F-4815-BC80-8477D358A16C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {62EF7870-CA1F-4815-BC80-8477D358A16C}.Debug|Any CPU.Build.0 = Debug|Any CPU {62EF7870-CA1F-4815-BC80-8477D358A16C}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -1804,6 +1773,18 @@ Global {89B01C5B-42DF-4E99-847E-354B8C5FBA6F}.Release|x64.Build.0 = Release|Any CPU {89B01C5B-42DF-4E99-847E-354B8C5FBA6F}.Release|x86.ActiveCfg = Release|Any CPU {89B01C5B-42DF-4E99-847E-354B8C5FBA6F}.Release|x86.Build.0 = Release|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Debug|x64.ActiveCfg = Debug|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Debug|x64.Build.0 = Debug|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Debug|x86.ActiveCfg = Debug|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Debug|x86.Build.0 = Debug|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Release|Any CPU.Build.0 = Release|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Release|x64.ActiveCfg = Release|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Release|x64.Build.0 = Release|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Release|x86.ActiveCfg = Release|Any CPU + {DE47CB52-3E6F-4A6A-910E-AE118A00CE1A}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1818,9 +1799,6 @@ Global {4D8EC9A1-4854-4A88-8FE2-0B62C67110CB} = {B938B88D-2FD2-445F-B194-DEB3FF405ACF} {9D2408A7-F77B-4D79-8FE3-5A9B67DF5AD3} = {B938B88D-2FD2-445F-B194-DEB3FF405ACF} {33E57F0C-3CDB-4EB8-B6BE-6A0875B42EDE} = {36617B81-CF74-4FCB-A7CA-E95DF3CA92FC} - {2C7E2059-8542-4BC8-A170-39F6B9EDE548} = {36617B81-CF74-4FCB-A7CA-E95DF3CA92FC} - {727D7A4D-49ED-4FBF-B713-1091191C78AD} = {2C7E2059-8542-4BC8-A170-39F6B9EDE548} - {532F85C9-F589-40E7-814F-F0463A927788} = {7A597F60-480C-4BFF-A940-26094BB0CA62} {00947D4A-C20E-46E3-90C3-6CD6BC87EE72} = {36617B81-CF74-4FCB-A7CA-E95DF3CA92FC} {62EF7870-CA1F-4815-BC80-8477D358A16C} = {3DBE2341-7244-4095-A60C-A0AF7E187C9B} {9D0EDBEC-22F9-4C3C-9349-B5888F709B6A} = {3DBE2341-7244-4095-A60C-A0AF7E187C9B} diff --git a/NuGet.config b/NuGet.config index 84a9f003130..f3152af8719 100644 --- a/NuGet.config +++ b/NuGet.config @@ -2,11 +2,11 @@ - + + + + + diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7a5400934b6..c9a85e72211 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,40 +1,147 @@ -# -# See https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema for details -# +variables: + - name: _TeamName + value: AspNetCore + - name: _GeneralBuildArg + value: /p:ArtifactsShippingPackagesDir=$(Build.SourcesDirectory)/artifacts/$(_BuildConfig)/packages/product/ + /p:ArtifactsNonShippingPackagesDir=$(Build.SourcesDirectory)/artifacts/$(_BuildConfig)/packages/internal/ -# Only run CI builds for these branches +# CI and PR triggers trigger: - branches: - include: - - 'master' - - 'release/*' - - 'internal/release/*' -# Run PR validation on all branches -pr: - branches: - include: - - '*' +- master -name: $(Date:yyyyMMdd).$(Rev:rr) +pr: +- master jobs: -- template: eng/templates/default-build.yml +- template: /eng/common/templates/jobs/jobs.yml parameters: - agentOs: Windows - configuration: Release - codeSign: true - publishToBar: true - artifacts: - publish: true - name: artifacts - path: artifacts/ + enableMicrobuild: true + enablePublishBuildArtifacts: true + enablePublishTestResults: true + enablePublishBuildAssets: true + enableTelemetry: true + helixRepo: aspnet/Extensions + jobs: + - job: Windows + pool: + # For public or PR jobs, use the hosted pool. For internal jobs use the internal pool. + # Will eventually change this to two BYOC pools. + ${{ if ne(variables['System.TeamProject'], 'internal') }}: + name: Hosted VS2017 + vmImage: vs2017-win2016 + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: dotnet-internal-temp + variables: + # Only enable publishing in official builds. + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + # DotNet-Blob-Feed provides: dotnetfeed-storage-access-key-1 + # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT + - group: DotNet-Blob-Feed + - group: Publish-Build-Assets + - name: _OfficialBuildArgs + value: /p:DotNetSignType=$(_SignType) + /p:TeamName=$(_TeamName) + /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) + /p:DotNetPublishBlobFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json + /p:DotNetPublishToBlobFeed=$(_DotNetPublishToBlobFeed) + /p:OfficialBuildId=$(BUILD.BUILDNUMBER) + # else + - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + - name: _OfficialBuildArgs + value: '' + strategy: + matrix: + ${{ if in(variables['Build.Reason'], 'PullRequest') }}: + Debug: + _BuildConfig: Debug + _SignType: test + _DotNetPublishToBlobFeed: false + _BuildArgs: $(_GeneralBuildArg) -- template: eng/templates/default-build.yml - parameters: - agentOs: macOS - configuration: Release + Release: + _BuildConfig: Release + # PRs or external builds are not signed. + ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + _SignType: test + _DotNetPublishToBlobFeed: false + _BuildArgs: $(_GeneralBuildArg) + ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + _SignType: real + _DotNetPublishToBlobFeed: true + _BuildArgs: $(_OfficialBuildArgs) + $(_GeneralBuildArg) + steps: + - checkout: self + clean: true + - script: eng\common\cibuild.cmd + -warnaserror $False + -configuration $(_BuildConfig) + -prepareMachine + $(_BuildArgs) + displayName: Build and Publish + - powershell: eng\common\msbuild.ps1 eng/repo.targets '/p:IsFinalBuild=$(IsFinalBuild)' '/p:CI=true' + displayName: Set CI Tags + condition: eq(variables['_BuildConfig'], 'Release') + - task: PublishBuildArtifacts@1 + displayName: Upload package artifacts + condition: and(eq(variables['system.pullrequest.isfork'], false), eq(variables['_BuildConfig'], 'Release')) + inputs: + pathtoPublish: artifacts/ + ${{ if eq(parameters.artifacts.name, '') }}: + artifactName: artifacts + ${{ if ne(parameters.artifacts.name, '') }}: + artifactName: ${{ parameters.artifacts.name }} + artifactType: Container + parallel: true -- template: eng/templates/default-build.yml - parameters: - agentOs: Linux - configuration: Release + - job: Ubuntu_16_04 + displayName: 'Ubuntu 16.04' + pool: + name: Hosted Ubuntu 1604 + vmImage: ubuntu-16.04 + strategy: + matrix: + ${{ if in(variables['Build.Reason'], 'PullRequest') }}: + Debug: + _BuildConfig: Debug + _SignType: none + _DotNetPublishToBlobFeed : false + Release: + _BuildConfig: Release + _SignType: none + _DotNetPublishToBlobFeed : false + steps: + - checkout: self + clean: true + - script: eng/common/cibuild.sh + --warnAsError false + --configuration $(_BuildConfig) + --prepareMachine + $(_GeneralBuildArg) + displayName: Build + + - job: OSX_10_13 + displayName: 'OSX' + pool: + name: Hosted macOS + vmImage: macOS-10.13 + strategy: + matrix: + ${{ if in(variables['Build.Reason'], 'PullRequest') }}: + Debug: + _BuildConfig: Debug + _SignType: none + _DotNetPublishToBlobFeed : false + Release: + _BuildConfig: Release + _SignType: none + _DotNetPublishToBlobFeed : false + steps: + - checkout: self + clean: true + - script: eng/common/cibuild.sh + --warnAsError false + --configuration $(_BuildConfig) + --prepareMachine + $(_GeneralBuildArg) + displayName: Build diff --git a/build.cmd b/build.cmd index b6c8d24864f..41182e23232 100644 --- a/build.cmd +++ b/build.cmd @@ -1,2 +1,3 @@ -@ECHO OFF -PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0build.ps1' %*; exit $LASTEXITCODE" +@echo off +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -warnaserror $False -build -restore -pack %*" +exit /b %ErrorLevel% diff --git a/build.ps1 b/build.ps1 deleted file mode 100755 index 278901e1120..00000000000 --- a/build.ps1 +++ /dev/null @@ -1,224 +0,0 @@ -#!/usr/bin/env pwsh -c -#requires -version 4 - -<# -.SYNOPSIS -Executes KoreBuild commands. - -.DESCRIPTION -Downloads korebuild if required. Then executes the KoreBuild command. To see available commands, execute with `-Command help`. - -.PARAMETER Path -The folder to build. Defaults to the folder containing this script. - -.PARAMETER Channel -The channel of KoreBuild to download. Overrides the value from the config file. - -.PARAMETER DotNetHome -The directory where .NET Core tools will be stored. - -.PARAMETER ToolsSource -The base url where build tools can be downloaded. Overrides the value from the config file. - -.PARAMETER Update -Updates KoreBuild to the latest version even if a lock file is present. - -.PARAMETER Reinstall -Re-installs KoreBuild - -.PARAMETER ConfigFile -The path to the configuration file that stores values. Defaults to korebuild.json. - -.PARAMETER ToolsSourceSuffix -The Suffix to append to the end of the ToolsSource. Useful for query strings in blob stores. - -.PARAMETER CI -Sets up CI specific settings and variables. - -.PARAMETER PackageVersionPropsUrl -(optional) the url of the package versions props path containing dependency versions. - -.PARAMETER MSBuildArguments -Additional MSBuild arguments to be passed through. - -.NOTES -This function will create a file $PSScriptRoot/korebuild-lock.txt. This lock file can be committed to source, but does not have to be. -When the lockfile is not present, KoreBuild will create one using latest available version from $Channel. - -The $ConfigFile is expected to be an JSON file. It is optional, and the configuration values in it are optional as well. Any options set -in the file are overridden by command line parameters. - -.EXAMPLE -Example config file: -```json -{ - "$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/master/tools/korebuild.schema.json", - "channel": "master", - "toolsSource": "https://aspnetcore.blob.core.windows.net/buildtools" -} -``` -#> -[CmdletBinding(PositionalBinding = $false)] -param( - [string]$Path = $PSScriptRoot, - [Alias('c')] - [string]$Channel, - [Alias('d')] - [string]$DotNetHome, - [Alias('s')] - [string]$ToolsSource, - [Alias('u')] - [switch]$Update, - [switch]$Reinstall, - [string]$ToolsSourceSuffix, - [string]$ConfigFile = $null, - [switch]$CI, - [string]$PackageVersionPropsUrl = $env:PB_PackageVersionPropsUrl, - [Parameter(ValueFromRemainingArguments = $true)] - [string[]]$MSBuildArguments -) - -Set-StrictMode -Version 2 -$ErrorActionPreference = 'Stop' - -# -# Functions -# - -function Get-KoreBuild { - - $lockFile = Join-Path $Path 'korebuild-lock.txt' - - if (!(Test-Path $lockFile) -or $Update) { - Get-RemoteFile "$ToolsSource/korebuild/channels/$Channel/latest.txt" $lockFile $ToolsSourceSuffix - } - - $version = Get-Content $lockFile | Where-Object { $_ -like 'version:*' } | Select-Object -first 1 - if (!$version) { - Write-Error "Failed to parse version from $lockFile. Expected a line that begins with 'version:'" - } - $version = $version.TrimStart('version:').Trim() - $korebuildPath = "$DotNetHome/buildtools/korebuild/$version" - - if ($Reinstall -and (Test-Path $korebuildPath)) { - Remove-Item -Force -Recurse $korebuildPath - } - - if (!(Test-Path $korebuildPath)) { - Write-Host -ForegroundColor Magenta "Downloading KoreBuild $version" - New-Item -ItemType Directory -Path $korebuildPath | Out-Null - $remotePath = "$ToolsSource/korebuild/artifacts/$version/korebuild.$version.zip" - - try { - $tmpfile = Join-Path ([IO.Path]::GetTempPath()) "KoreBuild-$([guid]::NewGuid()).zip" - Get-RemoteFile $remotePath $tmpfile $ToolsSourceSuffix - if (Get-Command -Name 'Microsoft.PowerShell.Archive\Expand-Archive' -ErrorAction Ignore) { - # Use built-in commands where possible as they are cross-plat compatible - Microsoft.PowerShell.Archive\Expand-Archive -Path $tmpfile -DestinationPath $korebuildPath - } - else { - # Fallback to old approach for old installations of PowerShell - Add-Type -AssemblyName System.IO.Compression.FileSystem - [System.IO.Compression.ZipFile]::ExtractToDirectory($tmpfile, $korebuildPath) - } - } - catch { - Remove-Item -Recurse -Force $korebuildPath -ErrorAction Ignore - throw - } - finally { - Remove-Item $tmpfile -ErrorAction Ignore - } - } - - return $korebuildPath -} - -function Get-RemoteFile([string]$RemotePath, [string]$LocalPath, [string]$RemoteSuffix) { - if ($RemotePath -notlike 'http*') { - Copy-Item $RemotePath $LocalPath - return - } - - $retries = 10 - while ($retries -gt 0) { - $retries -= 1 - try { - Invoke-WebRequest -UseBasicParsing -Uri $($RemotePath + $RemoteSuffix) -OutFile $LocalPath - return - } - catch { - Write-Verbose "Request failed. $retries retries remaining" - } - } - - Write-Error "Download failed: '$RemotePath'." -} - -# -# Main -# - -# Load configuration or set defaults - -$Path = Resolve-Path $Path -if (!$ConfigFile) { $ConfigFile = Join-Path $Path 'korebuild.json' } - -if (Test-Path $ConfigFile) { - try { - $config = Get-Content -Raw -Encoding UTF8 -Path $ConfigFile | ConvertFrom-Json - if ($config) { - if (!($Channel) -and (Get-Member -Name 'channel' -InputObject $config)) { [string] $Channel = $config.channel } - if (!($ToolsSource) -and (Get-Member -Name 'toolsSource' -InputObject $config)) { [string] $ToolsSource = $config.toolsSource} - } - } - catch { - Write-Host -ForegroundColor Red $Error[0] - Write-Error "$ConfigFile contains invalid JSON." - exit 1 - } -} - -if (!$DotNetHome) { - $DotNetHome = if ($env:DOTNET_HOME) { $env:DOTNET_HOME } ` - elseif ($CI) { Join-Path $PSScriptRoot '.dotnet' } ` - elseif ($env:USERPROFILE) { Join-Path $env:USERPROFILE '.dotnet'} ` - elseif ($env:HOME) {Join-Path $env:HOME '.dotnet'}` - else { Join-Path $PSScriptRoot '.dotnet'} -} - -if (!$Channel) { $Channel = 'master' } -if (!$ToolsSource) { $ToolsSource = 'https://aspnetcore.blob.core.windows.net/buildtools' } - -[string[]] $ProdConArgs = @() - -if ($PackageVersionPropsUrl) { - $IntermediateDir = Join-Path $PSScriptRoot 'obj' - $PropsFilePath = Join-Path $IntermediateDir 'PackageVersions.props' - New-Item -ItemType Directory $IntermediateDir -ErrorAction Ignore | Out-Null - Get-RemoteFile "${PackageVersionPropsUrl}${env:PB_AccessTokenSuffix}" $PropsFilePath - $ProdConArgs += "-p:DotNetPackageVersionPropsPath=$PropsFilePath" -} - -# Execute - -$korebuildPath = Get-KoreBuild -Import-Module -Force -Scope Local (Join-Path $korebuildPath 'KoreBuild.psd1') - -# PipeBuild parameters -$ProdConArgs += "-p:DotNetAssetRootUrl=${env:PB_AssetRootUrl}" -$ProdConArgs += "-p:DotNetRestoreSources=${env:PB_RestoreSource}" -$ProdConArgs += "-p:DotNetProductBuildId=${env:ProductBuildId}" -$ProdConArgs += "-p:PublishBlobFeedUrl=${env:PB_PublishBlobFeedUrl}" -$ProdConArgs += "-p:PublishType=${env:PB_PublishType}" -$ProdConArgs += "-p:SkipTests=${env:PB_SkipTests}" -$ProdConArgs += "-p:IsFinalBuild=${env:PB_IsFinalBuild}" -$ProdConArgs += "-p:SignType=${env:PB_SignType}" - -try { - Set-KoreBuildSettings -ToolsSource $ToolsSource -DotNetHome $DotNetHome -RepoPath $Path -ConfigFile $ConfigFile -CI:$CI - Invoke-KoreBuildCommand 'default-build' @ProdConArgs @MSBuildArguments -} -finally { - Remove-Module 'KoreBuild' -ErrorAction Ignore -} diff --git a/build.sh b/build.sh index c412d916d10..5a7d8fcd41f 100755 --- a/build.sh +++ b/build.sh @@ -1,283 +1,16 @@ #!/usr/bin/env bash -set -euo pipefail +source="${BASH_SOURCE[0]}" -# -# variables -# +# resolve $SOURCE until the file is no longer a symlink +while [[ -h $source ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" -RESET="\033[0m" -RED="\033[0;31m" -YELLOW="\033[0;33m" -MAGENTA="\033[0;95m" -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -verbose=false -update=false -reinstall=false -repo_path="$DIR" -channel='' -tools_source='' -tools_source_suffix='' -package_version_props_url="${PB_PACKAGEVERSIONPROPSURL:-}" -props_file_path='' -ci=false -msbuild_args=() - -# -# Functions -# -__usage() { - echo "Usage: $(basename "${BASH_SOURCE[0]}") [options] [[--] ...]" - echo "" - echo "Arguments:" - echo " ... Arguments passed to the build. Variable number of arguments allowed." - echo "" - echo "Options:" - echo " --verbose Show verbose output." - echo " -c|--channel The channel of KoreBuild to download. Overrides the value from the config file.." - echo " --config-file The path to the configuration file that stores values. Defaults to korebuild.json." - echo " -d|--dotnet-home The directory where .NET Core tools will be stored. Defaults to '\$DOTNET_HOME' or '\$HOME/.dotnet." - echo " --path The directory to build. Defaults to the directory containing the script." - echo " -s|--tools-source|-ToolsSource The base url where build tools can be downloaded. Overrides the value from the config file." - echo " --tools-source-suffix|-ToolsSourceSuffix The suffix to append to tools-source. Useful for query strings." - echo " -u|--update Update to the latest KoreBuild even if the lock file is present." - echo " --reinstall Reinstall KoreBuild." - echo " --ci Apply CI specific settings and environment variables." - echo " --package-version-props-url The url of the package versions props path containing dependency versions." - echo "" - echo "Description:" - echo " This function will create a file \$DIR/korebuild-lock.txt. This lock file can be committed to source, but does not have to be." - echo " When the lockfile is not present, KoreBuild will create one using latest available version from \$channel." - - if [[ "${1:-}" != '--no-exit' ]]; then - exit 2 - fi -} - -get_korebuild() { - local version - local lock_file="$repo_path/korebuild-lock.txt" - if [ ! -f "$lock_file" ] || [ "$update" = true ]; then - __get_remote_file "$tools_source/korebuild/channels/$channel/latest.txt" "$lock_file" "$tools_source_suffix" - fi - version="$(grep 'version:*' -m 1 "$lock_file")" - if [[ "$version" == '' ]]; then - __error "Failed to parse version from $lock_file. Expected a line that begins with 'version:'" - return 1 - fi - version="$(echo "${version#version:}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')" - local korebuild_path="$DOTNET_HOME/buildtools/korebuild/$version" - - if [ "$reinstall" = true ] && [ -d "$korebuild_path" ]; then - rm -rf "$korebuild_path" - fi - - { - if [ ! -d "$korebuild_path" ]; then - mkdir -p "$korebuild_path" - local remote_path="$tools_source/korebuild/artifacts/$version/korebuild.$version.zip" - tmpfile="$(mktemp)" - echo -e "${MAGENTA}Downloading KoreBuild ${version}${RESET}" - if __get_remote_file "$remote_path" "$tmpfile" "$tools_source_suffix"; then - unzip -q -d "$korebuild_path" "$tmpfile" - fi - rm "$tmpfile" || true - fi - - source "$korebuild_path/KoreBuild.sh" - } || { - if [ -d "$korebuild_path" ]; then - echo "Cleaning up after failed installation" - rm -rf "$korebuild_path" || true - fi - return 1 - } -} - -__error() { - echo -e "${RED}error: $*${RESET}" 1>&2 -} - -__warn() { - echo -e "${YELLOW}warning: $*${RESET}" -} - -__machine_has() { - hash "$1" > /dev/null 2>&1 - return $? -} - -__get_remote_file() { - local remote_path=$1 - local local_path=$2 - local remote_path_suffix=$3 - - if [[ "$remote_path" != 'http'* ]]; then - cp "$remote_path" "$local_path" - return 0 - fi - - local failed=false - if __machine_has wget; then - wget --tries 10 --quiet -O "$local_path" "${remote_path}${remote_path_suffix}" || failed=true - else - failed=true - fi - - if [ "$failed" = true ] && __machine_has curl; then - failed=false - curl --retry 10 -sSL -f --create-dirs -o "$local_path" "${remote_path}${remote_path_suffix}" || failed=true - fi - - if [ "$failed" = true ]; then - __error "Download failed: $remote_path" 1>&2 - return 1 - fi -} - -# -# main -# - -while [[ $# -gt 0 ]]; do - case $1 in - -\?|-h|--help) - __usage --no-exit - exit 0 - ;; - -c|--channel|-Channel) - shift - channel="${1:-}" - [ -z "$channel" ] && __usage - ;; - --config-file|-ConfigFile) - shift - config_file="${1:-}" - [ -z "$config_file" ] && __usage - if [ ! -f "$config_file" ]; then - __error "Invalid value for --config-file. $config_file does not exist." - exit 1 - fi - ;; - -d|--dotnet-home|-DotNetHome) - shift - DOTNET_HOME="${1:-}" - [ -z "$DOTNET_HOME" ] && __usage - ;; - --path|-Path) - shift - repo_path="${1:-}" - [ -z "$repo_path" ] && __usage - ;; - -s|--tools-source|-ToolsSource) - shift - tools_source="${1:-}" - [ -z "$tools_source" ] && __usage - ;; - --tools-source-suffix|-ToolsSourceSuffix) - shift - tools_source_suffix="${1:-}" - [ -z "$tools_source_suffix" ] && __usage - ;; - -u|--update|-Update) - update=true - ;; - --reinstall|-[Rr]einstall) - reinstall=true - ;; - --ci|-[Cc][Ii]) - ci=true - if [[ -z "${DOTNET_HOME:-}" ]]; then - DOTNET_HOME="$DIR/.dotnet" - fi - ;; - --verbose|-Verbose) - verbose=true - ;; - --package-version-props-url|-PackageVersionPropsUrl) - shift - # This parameter can be an empty string, but it should be set - [ -z "${1+x}" ] && __error "Missing value for parameter --package-version-props-url" && __usage - package_version_props_url="$1" - ;; - *) - msbuild_args[${#msbuild_args[*]}]="$1" - ;; - esac - shift + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" done -if ! __machine_has unzip; then - __error 'Missing required command: unzip' - exit 1 -fi - -if ! __machine_has curl && ! __machine_has wget; then - __error 'Missing required command. Either wget or curl is required.' - exit 1 -fi - -[ -z "${config_file:-}" ] && config_file="$repo_path/korebuild.json" -if [ -f "$config_file" ]; then - if __machine_has jq ; then - if jq '.' "$config_file" >/dev/null ; then - config_channel="$(jq -r 'select(.channel!=null) | .channel' "$config_file")" - config_tools_source="$(jq -r 'select(.toolsSource!=null) | .toolsSource' "$config_file")" - else - __error "$config_file contains invalid JSON." - exit 1 - fi - elif __machine_has python ; then - if python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'))" >/dev/null ; then - config_channel="$(python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['channel'] if 'channel' in obj else '')")" - config_tools_source="$(python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['toolsSource'] if 'toolsSource' in obj else '')")" - else - __error "$config_file contains invalid JSON." - exit 1 - fi - elif __machine_has python3 ; then - if python3 -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'))" >/dev/null ; then - config_channel="$(python3 -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['channel'] if 'channel' in obj else '')")" - config_tools_source="$(python3 -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['toolsSource'] if 'toolsSource' in obj else '')")" - else - __error "$config_file contains invalid JSON." - exit 1 - fi - else - __error 'Missing required command: jq or python. Could not parse the JSON file.' - exit 1 - fi - - [ ! -z "${config_channel:-}" ] && channel="$config_channel" - [ ! -z "${config_tools_source:-}" ] && tools_source="$config_tools_source" -fi - -[ -z "${DOTNET_HOME:-}" ] && DOTNET_HOME="$HOME/.dotnet" -[ -z "$channel" ] && channel='master' -[ -z "$tools_source" ] && tools_source='https://aspnetcore.blob.core.windows.net/buildtools' - -prodcon_args=() - -if [ ! -z "$package_version_props_url" ]; then - intermediate_dir="$repo_path/obj" - props_file_path="$intermediate_dir/PackageVersions.props" - mkdir -p "$intermediate_dir" - __get_remote_file "${package_version_props_url}" "$props_file_path" "${PB_ACCESSTOKENSUFFIX:-}" - prodcon_args[${#prodcon_args[*]}]="-p:DotNetPackageVersionPropsPath=$props_file_path" -fi - -# PipeBuild parameters -prodcon_args[${#prodcon_args[*]}]="-p:DotNetAssetRootUrl=${PB_ASSETROOTURL:-}" -prodcon_args[${#prodcon_args[*]}]="-p:DotNetRestoreSources=${PB_RESTORESOURCE:-}" -prodcon_args[${#prodcon_args[*]}]="-p:DotNetProductBuildId=${PRODUCTBUILDID:-}" -prodcon_args[${#prodcon_args[*]}]="-p:PublishBlobFeedUrl=${PB_PUBLISHBLOBFEEDURL:-}" -prodcon_args[${#prodcon_args[*]}]="-p:PublishType=${PB_PUBLISHTYPE:-}" -prodcon_args[${#prodcon_args[*]}]="-p:SkipTests=${PB_SKIPTESTS:-}" -prodcon_args[${#prodcon_args[*]}]="-p:IsFinalBuild=${PB_ISFINALBUILD:-}" - -get_korebuild -set_korebuildsettings "$tools_source" "$DOTNET_HOME" "$repo_path" "$config_file" "$ci" - -# This incantation avoids unbound variable issues if msbuild_args is empty -# https://stackoverflow.com/questions/7577052/bash-empty-array-expansion-with-set-u -invoke_korebuild_command default-build "${prodcon_args[@]}" ${msbuild_args[@]+"${msbuild_args[@]}"} +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" +"$scriptroot/eng/common/build.sh" --pack --build --restore --warnAsError false $@ diff --git a/build/repo.props b/build/repo.props deleted file mode 100644 index 4d47fc48854..00000000000 --- a/build/repo.props +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - true - true - true - false - false - $(RepositoryRoot)src\Shared\src\ - $(SolutionProperties);DotNetPackageVersionPropsPath=$(DotNetPackageVersionPropsPath) - $(SolutionProperties);DotNetAdditionalRestoreSources=$(DotNetAdditionalRestoreSources) - $(RepositoryRoot)src\**\*.csproj - $(RepositoryRoot)eng\NuGetPackageVerifier.json - - - - - - - - - - - - diff --git a/eng/AspNetCore.snk b/eng/AspNetCore.snk deleted file mode 100644 index e10e4889c12..00000000000 Binary files a/eng/AspNetCore.snk and /dev/null differ diff --git a/eng/Build.props b/eng/Build.props new file mode 100644 index 00000000000..6bd267a2c3b --- /dev/null +++ b/eng/Build.props @@ -0,0 +1,5 @@ + + + + + diff --git a/eng/Dependencies.props b/eng/Dependencies.props index 9fd8cc3d544..8b1a082fca2 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -29,6 +29,13 @@ + + + 2.4.0 + $(XUnitVersion) + $(XUnitVersion) + + @@ -47,13 +54,13 @@ - + - - - - - + + + + + diff --git a/eng/ProjectReferences.props b/eng/ProjectReferences.props index c9d70722844..8fcb5efbb29 100644 --- a/eng/ProjectReferences.props +++ b/eng/ProjectReferences.props @@ -56,6 +56,14 @@ + + + + + + + + diff --git a/eng/Signing.props b/eng/Signing.props new file mode 100644 index 00000000000..1be8dc1f251 --- /dev/null +++ b/eng/Signing.props @@ -0,0 +1,7 @@ + + + + + + + diff --git a/eng/Sources.props b/eng/Sources.props deleted file mode 100644 index 28a7e2f81cc..00000000000 --- a/eng/Sources.props +++ /dev/null @@ -1,19 +0,0 @@ - - - - - $(DotNetRestoreSources) - - $(RestoreSources); - https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json; - https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json; - https://dotnet.myget.org/F/dotnet-core/api/v3/index.json; - https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json; - https://api.nuget.org/v3/index.json; - - - $(RestoreSources); - $(DotNetAdditionalRestoreSources); - - - diff --git a/eng/Tools.props b/eng/Tools.props new file mode 100644 index 00000000000..e93248a4cb7 --- /dev/null +++ b/eng/Tools.props @@ -0,0 +1,35 @@ + + + + + + + + + $(RepoRoot)eng\dotnet-install.ps1 + $(RepoRoot)eng\dotnet-install.sh + + -Architecture x64 -InstallDir $(_DotNetRoot) -Runtime dotnet -SkipNonVersionedFiles + --architecture x64 --install-dir $(_DotNetRoot) --runtime dotnet --skip-non-versioned-files + + + + + + + + + + diff --git a/eng/Versions.props b/eng/Versions.props index 4c9488df605..a60ddb929bb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -15,11 +15,6 @@ 4.6.0-preview.19073.11 4.6.0-preview.19073.11 - - - 3.0.0-build-20190105.1 - 2.2.0-beta.19072.5 - 4.5.2 @@ -28,4 +23,58 @@ 4.5.2 4.5.0 + + 3 + 0 + 0 + $(MajorVersion).$(MinorVersion).$(PatchVersion) + preview + https://raw.githubusercontent.com/aspnet/AspNetCore/2.0.0/LICENSE.txt + true + true + + + 0.1.$(PatchVersion) + + true + + false + true + false + + $(ExperimentalVersionPrefix) + $(VersionPrefix)-$(PreReleaseVersionLabel) + $(PreReleaseVersionLabel) + + $(MajorVersion).$(MinorVersion).$([MSBuild]::Subtract($(PatchVersion), 1)) + $(VersionPrefix)-$(VersionSuffix) + + + 3.0.0-preview-27122-01 + 1.0.0-alpha-004 + 4.6.0-preview.18571.3 + 2.0.3 + 4.6.0-preview.18631.1 + 4.7.0-preview.18631.1 + 4.6.0-preview.18631.1 + 4.6.0-preview.18631.1 + 4.6.0-preview.18631.1 + 4.5.2-servicing-27114-05 + 4.3.2 + 1.7.0-preview.18604.2 + 4.6.0-preview.18604.2 + 4.3.0 + 4.6.0-preview.18604.2 + 4.6.0-preview.18604.2 + 4.6.0-preview.18604.2 + 4.6.0-preview.18604.2 + 4.5.0 + + + + + + + + diff --git a/eng/common/init-tools-native.sh b/eng/common/init-tools-native.sh old mode 100644 new mode 100755 diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 4204dc14f89..8ce8dc5ca93 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -29,7 +29,7 @@ # Specifies which msbuild engine to use for build: 'vs', 'dotnet' or unspecified (determined based on presence of tools.vs in global.json). [string]$msbuildEngine = if (Test-Path variable:msbuildEngine) { $msbuildEngine } else { $null } -# True to attempt using .NET Core already that meets requirements specified in global.json +# True to attempt using .NET Core already that meets requirements specified in global.json # installed on the machine instead of downloading one. [bool]$useInstalledDotNetCli = if (Test-Path variable:useInstalledDotNetCli) { $useInstalledDotNetCli } else { $true } @@ -70,7 +70,7 @@ function Exec-Process([string]$command, [string]$commandArgs) { $finished = $false try { - while (-not $process.WaitForExit(100)) { + while (-not $process.WaitForExit(100)) { # Non-blocking loop done to allow ctr-c interrupts } @@ -171,7 +171,7 @@ function InstallDotNetSdk([string] $dotnetRoot, [string] $version) { } # -# Locates Visual Studio MSBuild installation. +# Locates Visual Studio MSBuild installation. # The preference order for MSBuild to use is as follows: # # 1. MSBuild from an active VS command prompt @@ -188,7 +188,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = if (!$vsRequirements) { $vsRequirements = $GlobalJson.tools.vs } $vsMinVersionStr = if ($vsRequirements.version) { $vsRequirements.version } else { "15.9" } - $vsMinVersion = [Version]::new($vsMinVersionStr) + $vsMinVersion = [Version]::new($vsMinVersionStr) # Try msbuild command available in the environment. if ($env:VSINSTALLDIR -ne $null) { @@ -232,7 +232,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = function InitializeVisualStudioEnvironmentVariables([string] $vsInstallDir, [string] $vsMajorVersion) { $env:VSINSTALLDIR = $vsInstallDir Set-Item "env:VS$($vsMajorVersion)0COMNTOOLS" (Join-Path $vsInstallDir "Common7\Tools\") - + $vsSdkInstallDir = Join-Path $vsInstallDir "VSSDK\" if (Test-Path $vsSdkInstallDir) { Set-Item "env:VSSDK$($vsMajorVersion)0Install" $vsSdkInstallDir @@ -259,13 +259,13 @@ function InstallXCopyMSBuild([string] $packageVersion) { # Locates Visual Studio instance that meets the minimal requirements specified by tools.vs object in global.json. # # The following properties of tools.vs are recognized: -# "version": "{major}.{minor}" +# "version": "{major}.{minor}" # Two part minimal VS version, e.g. "15.9", "16.0", etc. -# "components": ["componentId1", "componentId2", ...] +# "components": ["componentId1", "componentId2", ...] # Array of ids of workload components that must be available in the VS instance. # See e.g. https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-enterprise?view=vs-2017 # -# Returns JSON describing the located VS instance (same format as returned by vswhere), +# Returns JSON describing the located VS instance (same format as returned by vswhere), # or $null if no instance meeting the requirements is found on the machine. # function LocateVisualStudio([object]$vsRequirements = $null){ @@ -286,7 +286,6 @@ function LocateVisualStudio([object]$vsRequirements = $null){ if (!$vsRequirements) { $vsRequirements = $GlobalJson.tools.vs } $args = @("-latest", "-prerelease", "-format", "json", "-requires", "Microsoft.Component.MSBuild") - if (Get-Member -InputObject $vsRequirements -Name "version") { $args += "-version" $args += $vsRequirements.version @@ -296,7 +295,7 @@ function LocateVisualStudio([object]$vsRequirements = $null){ foreach ($component in $vsRequirements.components) { $args += "-requires" $args += $component - } + } } $vsInfo =& $vsWhereExe $args | ConvertFrom-Json @@ -353,7 +352,7 @@ function GetDefaultMSBuildEngine() { if (Get-Member -InputObject $GlobalJson.tools -Name "vs") { return "vs" } - + if (Get-Member -InputObject $GlobalJson.tools -Name "dotnet") { return "dotnet" } @@ -402,15 +401,15 @@ function InitializeToolset() { $proj = Join-Path $ToolsetDir "restore.proj" $bl = if ($binaryLog) { "/bl:" + (Join-Path $LogDir "ToolsetRestore.binlog") } else { "" } - + '' | Set-Content $proj MSBuild $proj $bl /t:__WriteToolsetLocation /noconsolelogger /p:__ToolsetLocationOutputFile=$toolsetLocationFile - + $path = Get-Content $toolsetLocationFile -TotalCount 1 if (!(Test-Path $path)) { throw "Invalid toolset path: $path" } - + return $global:_ToolsetBuildProj = $path } @@ -448,8 +447,8 @@ function MSBuild() { $cmdArgs = "$($buildTool.Command) /m /nologo /clp:Summary /v:$verbosity /nr:$nodeReuse" - if ($warnAsError) { - $cmdArgs += " /warnaserror /p:TreatWarningsAsErrors=true" + if ($warnAsError) { + $cmdArgs += " /warnaserror /p:TreatWarningsAsErrors=true" } foreach ($arg in $args) { @@ -457,29 +456,29 @@ function MSBuild() { $cmdArgs += " `"$arg`"" } } - + $exitCode = Exec-Process $buildTool.Path $cmdArgs if ($exitCode -ne 0) { Write-Host "Build failed." -ForegroundColor Red $buildLog = GetMSBuildBinaryLogCommandLineArgument $args - if ($buildLog -ne $null) { - Write-Host "See log: $buildLog" -ForegroundColor DarkGray + if ($buildLog -ne $null) { + Write-Host "See log: $buildLog" -ForegroundColor DarkGray } ExitWithExitCode $exitCode } } -function GetMSBuildBinaryLogCommandLineArgument($arguments) { +function GetMSBuildBinaryLogCommandLineArgument($arguments) { foreach ($argument in $arguments) { if ($argument -ne $null) { $arg = $argument.Trim() if ($arg.StartsWith("/bl:", "OrdinalIgnoreCase")) { return $arg.Substring("/bl:".Length) - } - + } + if ($arg.StartsWith("/binaryLogger:", "OrdinalIgnoreCase")) { return $arg.Substring("/binaryLogger:".Length) } diff --git a/eng/common/tools.sh b/eng/common/tools.sh old mode 100644 new mode 100755 diff --git a/eng/dotnet-install.ps1 b/eng/dotnet-install.ps1 new file mode 100644 index 00000000000..17b94a3fc85 --- /dev/null +++ b/eng/dotnet-install.ps1 @@ -0,0 +1,588 @@ +# +# 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. +# + +<# +.SYNOPSIS + Installs dotnet cli +.DESCRIPTION + Installs dotnet cli. If dotnet installation already exists in the given directory + it will update it only if the requested version differs from the one already installed. +.PARAMETER Channel + Default: LTS + Download from the Channel specified. Possible values: + - Current - most current release + - LTS - most current supported release + - 2-part version in a format A.B - represents a specific release + examples: 2.0; 1.0 + - Branch name + examples: release/2.0.0; Master +.PARAMETER Version + Default: latest + Represents a build version on specific channel. Possible values: + - latest - most latest build on specific channel + - coherent - most latest coherent build on specific channel + coherent applies only to SDK downloads + - 3-part version in a format A.B.C - represents specific version of build + examples: 2.0.0-preview2-006120; 1.1.0 +.PARAMETER InstallDir + Default: %LocalAppData%\Microsoft\dotnet + Path to where to install dotnet. Note that binaries will be placed directly in a given directory. +.PARAMETER Architecture + Default: - this value represents currently running OS architecture + Architecture of dotnet binaries to be installed. + Possible values are: , x64 and x86 +.PARAMETER SharedRuntime + This parameter is obsolete and may be removed in a future version of this script. + The recommended alternative is '-Runtime dotnet'. + Default: false + Installs just the shared runtime bits, not the entire SDK. + This is equivalent to specifying `-Runtime dotnet`. +.PARAMETER Runtime + Installs just a shared runtime, not the entire SDK. + Possible values: + - dotnet - the Microsoft.NETCore.App shared runtime + - aspnetcore - the Microsoft.AspNetCore.App shared runtime +.PARAMETER DryRun + If set it will not perform installation but instead display what command line to use to consistently install + currently requested version of dotnet cli. In example if you specify version 'latest' it will display a link + with specific version so that this command can be used deterministicly in a build script. + It also displays binaries location if you prefer to install or download it yourself. +.PARAMETER NoPath + By default this script will set environment variable PATH for the current process to the binaries folder inside installation folder. + If set it will display binaries location but not set any environment variable. +.PARAMETER Verbose + Displays diagnostics information. +.PARAMETER AzureFeed + Default: https://dotnetcli.azureedge.net/dotnet + This parameter typically is not changed by the user. + It allows changing the URL for the Azure feed used by this installer. +.PARAMETER UncachedFeed + This parameter typically is not changed by the user. + It allows changing the URL for the Uncached feed used by this installer. +.PARAMETER FeedCredential + Used as a query string to append to the Azure feed. + It allows changing the URL to use non-public blob storage accounts. +.PARAMETER ProxyAddress + If set, the installer will use the proxy when making web requests +.PARAMETER ProxyUseDefaultCredentials + Default: false + Use default credentials, when using proxy address. +.PARAMETER SkipNonVersionedFiles + Default: false + Skips installing non-versioned files if they already exist, such as dotnet.exe. +.PARAMETER NoCdn + Disable downloading from the Azure CDN, and use the uncached feed directly. +#> +[cmdletbinding()] +param( + [string]$Channel = "LTS", + [string]$Version = "Latest", + [string]$InstallDir = "", + [string]$Architecture = "", + [ValidateSet("dotnet", "aspnetcore", IgnoreCase = $false)] + [string]$Runtime, + [Obsolete("This parameter may be removed in a future version of this script. The recommended alternative is '-Runtime dotnet'.")] + [switch]$SharedRuntime, + [switch]$DryRun, + [switch]$NoPath, + [string]$AzureFeed = "https://dotnetcli.azureedge.net/dotnet", + [string]$UncachedFeed = "https://dotnetcli.blob.core.windows.net/dotnet", + [string]$FeedCredential, + [string]$ProxyAddress, + [switch]$ProxyUseDefaultCredentials, + [switch]$SkipNonVersionedFiles, + [switch]$NoCdn +) + +Set-StrictMode -Version Latest +$ErrorActionPreference = "Stop" +$ProgressPreference = "SilentlyContinue" + +if ($NoCdn) { + $AzureFeed = $UncachedFeed +} + +$BinFolderRelativePath = "" + +if ($SharedRuntime -and (-not $Runtime)) { + $Runtime = "dotnet" +} + +# example path with regex: shared/1.0.0-beta-12345/somepath +$VersionRegEx = "/\d+\.\d+[^/]+/" +$OverrideNonVersionedFiles = !$SkipNonVersionedFiles + +function Say($str) { + Write-Host "dotnet-install: $str" +} + +function Say-Verbose($str) { + Write-Verbose "dotnet-install: $str" +} + +function Say-Invocation($Invocation) { + $command = $Invocation.MyCommand; + $args = (($Invocation.BoundParameters.Keys | foreach { "-$_ `"$($Invocation.BoundParameters[$_])`"" }) -join " ") + Say-Verbose "$command $args" +} + +function Invoke-With-Retry([ScriptBlock]$ScriptBlock, [int]$MaxAttempts = 3, [int]$SecondsBetweenAttempts = 1) { + $Attempts = 0 + + while ($true) { + try { + return $ScriptBlock.Invoke() + } + catch { + $Attempts++ + if ($Attempts -lt $MaxAttempts) { + Start-Sleep $SecondsBetweenAttempts + } + else { + throw + } + } + } +} + +function Get-Machine-Architecture() { + Say-Invocation $MyInvocation + + # possible values: AMD64, IA64, x86 + return $ENV:PROCESSOR_ARCHITECTURE +} + +# TODO: Architecture and CLIArchitecture should be unified +function Get-CLIArchitecture-From-Architecture([string]$Architecture) { + Say-Invocation $MyInvocation + + switch ($Architecture.ToLower()) { + { $_ -eq "" } { return Get-CLIArchitecture-From-Architecture $(Get-Machine-Architecture) } + { ($_ -eq "amd64") -or ($_ -eq "x64") } { return "x64" } + { $_ -eq "x86" } { return "x86" } + default { throw "Architecture not supported. If you think this is a bug, please report it at https://github.com/dotnet/cli/issues" } + } +} + +function Get-Version-Info-From-Version-Text([string]$VersionText) { + Say-Invocation $MyInvocation + + $Data = @($VersionText.Split([char[]]@(), [StringSplitOptions]::RemoveEmptyEntries)); + + $VersionInfo = @{} + $VersionInfo.CommitHash = $Data[0].Trim() + $VersionInfo.Version = $Data[1].Trim() + return $VersionInfo +} + +function Load-Assembly([string] $Assembly) { + try { + Add-Type -Assembly $Assembly | Out-Null + } + catch { + # On Nano Server, Powershell Core Edition is used. Add-Type is unable to resolve base class assemblies because they are not GAC'd. + # Loading the base class assemblies is not unnecessary as the types will automatically get resolved. + } +} + +function GetHTTPResponse([Uri] $Uri) { + Invoke-With-Retry( + { + + $HttpClient = $null + + try { + # HttpClient is used vs Invoke-WebRequest in order to support Nano Server which doesn't support the Invoke-WebRequest cmdlet. + Load-Assembly -Assembly System.Net.Http + + if (-not $ProxyAddress) { + try { + # Despite no proxy being explicitly specified, we may still be behind a default proxy + $DefaultProxy = [System.Net.WebRequest]::DefaultWebProxy; + if ($DefaultProxy -and (-not $DefaultProxy.IsBypassed($Uri))) { + $ProxyAddress = $DefaultProxy.GetProxy($Uri).OriginalString + $ProxyUseDefaultCredentials = $true + } + } + catch { + # Eat the exception and move forward as the above code is an attempt + # at resolving the DefaultProxy that may not have been a problem. + $ProxyAddress = $null + Say-Verbose("Exception ignored: $_.Exception.Message - moving forward...") + } + } + + if ($ProxyAddress) { + $HttpClientHandler = New-Object System.Net.Http.HttpClientHandler + $HttpClientHandler.Proxy = New-Object System.Net.WebProxy -Property @{Address = $ProxyAddress; UseDefaultCredentials = $ProxyUseDefaultCredentials} + $HttpClient = New-Object System.Net.Http.HttpClient -ArgumentList $HttpClientHandler + } + else { + + $HttpClient = New-Object System.Net.Http.HttpClient + } + # Default timeout for HttpClient is 100s. For a 50 MB download this assumes 500 KB/s average, any less will time out + # 10 minutes allows it to work over much slower connections. + $HttpClient.Timeout = New-TimeSpan -Minutes 10 + $Response = $HttpClient.GetAsync("${Uri}${FeedCredential}").Result + if (($Response -eq $null) -or (-not ($Response.IsSuccessStatusCode))) { + # The feed credential is potentially sensitive info. Do not log FeedCredential to console output. + $ErrorMsg = "Failed to download $Uri." + if ($Response -ne $null) { + $ErrorMsg += " $Response" + } + + throw $ErrorMsg + } + + return $Response + } + finally { + if ($HttpClient -ne $null) { + $HttpClient.Dispose() + } + } + }) +} + + +function Get-Latest-Version-Info([string]$AzureFeed, [string]$Channel, [bool]$Coherent) { + Say-Invocation $MyInvocation + + $VersionFileUrl = $null + if ($Runtime -eq "dotnet") { + $VersionFileUrl = "$UncachedFeed/Runtime/$Channel/latest.version" + } + elseif ($Runtime -eq "aspnetcore") { + $VersionFileUrl = "$UncachedFeed/aspnetcore/Runtime/$Channel/latest.version" + } + elseif (-not $Runtime) { + if ($Coherent) { + $VersionFileUrl = "$UncachedFeed/Sdk/$Channel/latest.coherent.version" + } + else { + $VersionFileUrl = "$UncachedFeed/Sdk/$Channel/latest.version" + } + } + else { + throw "Invalid value for `$Runtime" + } + + $Response = GetHTTPResponse -Uri $VersionFileUrl + $StringContent = $Response.Content.ReadAsStringAsync().Result + + switch ($Response.Content.Headers.ContentType) { + { ($_ -eq "application/octet-stream") } { $VersionText = $StringContent } + { ($_ -eq "text/plain") } { $VersionText = $StringContent } + { ($_ -eq "text/plain; charset=UTF-8") } { $VersionText = $StringContent } + default { throw "``$Response.Content.Headers.ContentType`` is an unknown .version file content type." } + } + + $VersionInfo = Get-Version-Info-From-Version-Text $VersionText + + return $VersionInfo +} + + +function Get-Specific-Version-From-Version([string]$AzureFeed, [string]$Channel, [string]$Version) { + Say-Invocation $MyInvocation + + switch ($Version.ToLower()) { + { $_ -eq "latest" } { + $LatestVersionInfo = Get-Latest-Version-Info -AzureFeed $AzureFeed -Channel $Channel -Coherent $False + return $LatestVersionInfo.Version + } + { $_ -eq "coherent" } { + $LatestVersionInfo = Get-Latest-Version-Info -AzureFeed $AzureFeed -Channel $Channel -Coherent $True + return $LatestVersionInfo.Version + } + default { return $Version } + } +} + +function Get-Download-Link([string]$AzureFeed, [string]$SpecificVersion, [string]$CLIArchitecture) { + Say-Invocation $MyInvocation + + if ($Runtime -eq "dotnet") { + $PayloadURL = "$AzureFeed/Runtime/$SpecificVersion/dotnet-runtime-$SpecificVersion-win-$CLIArchitecture.zip" + } + elseif ($Runtime -eq "aspnetcore") { + $PayloadURL = "$AzureFeed/aspnetcore/Runtime/$SpecificVersion/aspnetcore-runtime-$SpecificVersion-win-$CLIArchitecture.zip" + } + elseif (-not $Runtime) { + $PayloadURL = "$AzureFeed/Sdk/$SpecificVersion/dotnet-sdk-$SpecificVersion-win-$CLIArchitecture.zip" + } + else { + throw "Invalid value for `$Runtime" + } + + Say-Verbose "Constructed primary payload URL: $PayloadURL" + + return $PayloadURL +} + +function Get-LegacyDownload-Link([string]$AzureFeed, [string]$SpecificVersion, [string]$CLIArchitecture) { + Say-Invocation $MyInvocation + + if (-not $Runtime) { + $PayloadURL = "$AzureFeed/Sdk/$SpecificVersion/dotnet-dev-win-$CLIArchitecture.$SpecificVersion.zip" + } + elseif ($Runtime -eq "dotnet") { + $PayloadURL = "$AzureFeed/Runtime/$SpecificVersion/dotnet-win-$CLIArchitecture.$SpecificVersion.zip" + } + else { + return $null + } + + Say-Verbose "Constructed legacy payload URL: $PayloadURL" + + return $PayloadURL +} + +function Get-User-Share-Path() { + Say-Invocation $MyInvocation + + $InstallRoot = $env:DOTNET_INSTALL_DIR + if (!$InstallRoot) { + $InstallRoot = "$env:LocalAppData\Microsoft\dotnet" + } + return $InstallRoot +} + +function Resolve-Installation-Path([string]$InstallDir) { + Say-Invocation $MyInvocation + + if ($InstallDir -eq "") { + return Get-User-Share-Path + } + return $InstallDir +} + +function Get-Version-Info-From-Version-File([string]$InstallRoot, [string]$RelativePathToVersionFile) { + Say-Invocation $MyInvocation + + $VersionFile = Join-Path -Path $InstallRoot -ChildPath $RelativePathToVersionFile + Say-Verbose "Local version file: $VersionFile" + + if (Test-Path $VersionFile) { + $VersionText = cat $VersionFile + Say-Verbose "Local version file text: $VersionText" + return Get-Version-Info-From-Version-Text $VersionText + } + + Say-Verbose "Local version file not found." + + return $null +} + +function Is-Dotnet-Package-Installed([string]$InstallRoot, [string]$RelativePathToPackage, [string]$SpecificVersion) { + Say-Invocation $MyInvocation + + $DotnetPackagePath = Join-Path -Path $InstallRoot -ChildPath $RelativePathToPackage | Join-Path -ChildPath $SpecificVersion + Say-Verbose "Is-Dotnet-Package-Installed: Path to a package: $DotnetPackagePath" + return Test-Path $DotnetPackagePath -PathType Container +} + +function Get-Absolute-Path([string]$RelativeOrAbsolutePath) { + # Too much spam + # Say-Invocation $MyInvocation + + return $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($RelativeOrAbsolutePath) +} + +function Get-Path-Prefix-With-Version($path) { + $match = [regex]::match($path, $VersionRegEx) + if ($match.Success) { + return $entry.FullName.Substring(0, $match.Index + $match.Length) + } + + return $null +} + +function Get-List-Of-Directories-And-Versions-To-Unpack-From-Dotnet-Package([System.IO.Compression.ZipArchive]$Zip, [string]$OutPath) { + Say-Invocation $MyInvocation + + $ret = @() + foreach ($entry in $Zip.Entries) { + $dir = Get-Path-Prefix-With-Version $entry.FullName + if ($dir -ne $null) { + $path = Get-Absolute-Path $(Join-Path -Path $OutPath -ChildPath $dir) + if (-Not (Test-Path $path -PathType Container)) { + $ret += $dir + } + } + } + + $ret = $ret | Sort-Object | Get-Unique + + $values = ($ret | foreach { "$_" }) -join ";" + Say-Verbose "Directories to unpack: $values" + + return $ret +} + +# Example zip content and extraction algorithm: +# Rule: files if extracted are always being extracted to the same relative path locally +# .\ +# a.exe # file does not exist locally, extract +# b.dll # file exists locally, override only if $OverrideFiles set +# aaa\ # same rules as for files +# ... +# abc\1.0.0\ # directory contains version and exists locally +# ... # do not extract content under versioned part +# abc\asd\ # same rules as for files +# ... +# def\ghi\1.0.1\ # directory contains version and does not exist locally +# ... # extract content +function Extract-Dotnet-Package([string]$ZipPath, [string]$OutPath) { + Say-Invocation $MyInvocation + + Load-Assembly -Assembly System.IO.Compression.FileSystem + Set-Variable -Name Zip + try { + $Zip = [System.IO.Compression.ZipFile]::OpenRead($ZipPath) + + $DirectoriesToUnpack = Get-List-Of-Directories-And-Versions-To-Unpack-From-Dotnet-Package -Zip $Zip -OutPath $OutPath + + foreach ($entry in $Zip.Entries) { + $PathWithVersion = Get-Path-Prefix-With-Version $entry.FullName + if (($PathWithVersion -eq $null) -Or ($DirectoriesToUnpack -contains $PathWithVersion)) { + $DestinationPath = Get-Absolute-Path $(Join-Path -Path $OutPath -ChildPath $entry.FullName) + $DestinationDir = Split-Path -Parent $DestinationPath + $OverrideFiles = $OverrideNonVersionedFiles -Or (-Not (Test-Path $DestinationPath)) + if ((-Not $DestinationPath.EndsWith("\")) -And $OverrideFiles) { + New-Item -ItemType Directory -Force -Path $DestinationDir | Out-Null + [System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry, $DestinationPath, $OverrideNonVersionedFiles) + } + } + } + } + finally { + if ($Zip -ne $null) { + $Zip.Dispose() + } + } +} + +function DownloadFile([Uri]$Uri, [string]$OutPath) { + if ($Uri -notlike "http*") { + Say-Verbose "Copying file from $Uri to $OutPath" + Copy-Item $Uri.AbsolutePath $OutPath + return + } + + $Stream = $null + + try { + $Response = GetHTTPResponse -Uri $Uri + $Stream = $Response.Content.ReadAsStreamAsync().Result + $File = [System.IO.File]::Create($OutPath) + $Stream.CopyTo($File) + $File.Close() + } + finally { + if ($Stream -ne $null) { + $Stream.Dispose() + } + } +} + +function Prepend-Sdk-InstallRoot-To-Path([string]$InstallRoot, [string]$BinFolderRelativePath) { + $BinPath = Get-Absolute-Path $(Join-Path -Path $InstallRoot -ChildPath $BinFolderRelativePath) + if (-Not $NoPath) { + Say "Adding to current process PATH: `"$BinPath`". Note: This change will not be visible if PowerShell was run as a child process." + $env:path = "$BinPath;" + $env:path + } + else { + Say "Binaries of dotnet can be found in $BinPath" + } +} + +$CLIArchitecture = Get-CLIArchitecture-From-Architecture $Architecture +$SpecificVersion = Get-Specific-Version-From-Version -AzureFeed $AzureFeed -Channel $Channel -Version $Version +$DownloadLink = Get-Download-Link -AzureFeed $AzureFeed -SpecificVersion $SpecificVersion -CLIArchitecture $CLIArchitecture +$LegacyDownloadLink = Get-LegacyDownload-Link -AzureFeed $AzureFeed -SpecificVersion $SpecificVersion -CLIArchitecture $CLIArchitecture + +if ($DryRun) { + Say "Payload URLs:" + Say "Primary - $DownloadLink" + if ($LegacyDownloadLink) { + Say "Legacy - $LegacyDownloadLink" + } + Say "Repeatable invocation: .\$($MyInvocation.Line)" + exit 0 +} + +$InstallRoot = Resolve-Installation-Path $InstallDir +Say-Verbose "InstallRoot: $InstallRoot" + +if ($Runtime -eq "dotnet") { + $assetName = ".NET Core Runtime" + $dotnetPackageRelativePath = "shared\Microsoft.NETCore.App" +} +elseif ($Runtime -eq "aspnetcore") { + $assetName = "ASP.NET Core Runtime" + $dotnetPackageRelativePath = "shared\Microsoft.AspNetCore.App" +} +elseif (-not $Runtime) { + $assetName = ".NET Core SDK" + $dotnetPackageRelativePath = "sdk" +} +else { + throw "Invalid value for `$Runtime" +} + +# Check if the SDK version is already installed. +$isAssetInstalled = Is-Dotnet-Package-Installed -InstallRoot $InstallRoot -RelativePathToPackage $dotnetPackageRelativePath -SpecificVersion $SpecificVersion +if ($isAssetInstalled) { + Say "$assetName version $SpecificVersion is already installed." + Prepend-Sdk-InstallRoot-To-Path -InstallRoot $InstallRoot -BinFolderRelativePath $BinFolderRelativePath + exit 0 +} + +New-Item -ItemType Directory -Force -Path $InstallRoot | Out-Null + +$installDrive = $((Get-Item $InstallRoot).PSDrive.Name); +$free = Get-CimInstance -Class win32_logicaldisk | where Deviceid -eq "${installDrive}:" +if ($free.Freespace / 1MB -le 100 ) { + Say "There is not enough disk space on drive ${installDrive}:" + exit 0 +} + +$ZipPath = [System.IO.Path]::combine([System.IO.Path]::GetTempPath(), [System.IO.Path]::GetRandomFileName()) +Say-Verbose "Zip path: $ZipPath" +Say "Downloading link: $DownloadLink" +try { + DownloadFile -Uri $DownloadLink -OutPath $ZipPath +} +catch { + Say "Cannot download: $DownloadLink" + if ($LegacyDownloadLink) { + $DownloadLink = $LegacyDownloadLink + $ZipPath = [System.IO.Path]::combine([System.IO.Path]::GetTempPath(), [System.IO.Path]::GetRandomFileName()) + Say-Verbose "Legacy zip path: $ZipPath" + Say "Downloading legacy link: $DownloadLink" + DownloadFile -Uri $DownloadLink -OutPath $ZipPath + } + else { + throw "Could not download $assetName version $SpecificVersion" + } +} + +Say "Extracting zip from $DownloadLink" +Extract-Dotnet-Package -ZipPath $ZipPath -OutPath $InstallRoot + +# Check if the SDK version is now installed; if not, fail the installation. +$isAssetInstalled = Is-Dotnet-Package-Installed -InstallRoot $InstallRoot -RelativePathToPackage $dotnetPackageRelativePath -SpecificVersion $SpecificVersion +if (!$isAssetInstalled) { + throw "$assetName version $SpecificVersion failed to install with an unknown error." +} + +Remove-Item $ZipPath + +Prepend-Sdk-InstallRoot-To-Path -InstallRoot $InstallRoot -BinFolderRelativePath $BinFolderRelativePath + +Say "Installation finished" +exit 0 \ No newline at end of file diff --git a/eng/dotnet-install.sh b/eng/dotnet-install.sh new file mode 100755 index 00000000000..f2fe1aa3d68 --- /dev/null +++ b/eng/dotnet-install.sh @@ -0,0 +1,950 @@ +#!/usr/bin/env bash +# 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. +# + +# Stop script on NZEC +set -e +# Stop script if unbound variable found (use ${var:-} if intentional) +set -u +# By default cmd1 | cmd2 returns exit code of cmd2 regardless of cmd1 success +# This is causing it to fail +set -o pipefail + +# Use in the the functions: eval $invocation +invocation='say_verbose "Calling: ${yellow:-}${FUNCNAME[0]} ${green:-}$*${normal:-}"' + +# standard output may be used as a return value in the functions +# we need a way to write text on the screen in the functions so that +# it won't interfere with the return value. +# Exposing stream 3 as a pipe to standard output of the script itself +exec 3>&1 + +# Setup some colors to use. These need to work in fairly limited shells, like the Ubuntu Docker container where there are only 8 colors. +# See if stdout is a terminal +if [ -t 1 ] && command -v tput > /dev/null; then + # see if it supports colors + ncolors=$(tput colors) + if [ -n "$ncolors" ] && [ $ncolors -ge 8 ]; then + bold="$(tput bold || echo)" + normal="$(tput sgr0 || echo)" + black="$(tput setaf 0 || echo)" + red="$(tput setaf 1 || echo)" + green="$(tput setaf 2 || echo)" + yellow="$(tput setaf 3 || echo)" + blue="$(tput setaf 4 || echo)" + magenta="$(tput setaf 5 || echo)" + cyan="$(tput setaf 6 || echo)" + white="$(tput setaf 7 || echo)" + fi +fi + +say_warning() { + printf "%b\n" "${yellow:-}dotnet_install: Warning: $1${normal:-}" +} + +say_err() { + printf "%b\n" "${red:-}dotnet_install: Error: $1${normal:-}" >&2 +} + +say() { + # using stream 3 (defined in the beginning) to not interfere with stdout of functions + # which may be used as return value + printf "%b\n" "${cyan:-}dotnet-install:${normal:-} $1" >&3 +} + +say_verbose() { + if [ "$verbose" = true ]; then + say "$1" + fi +} + +# This platform list is finite - if the SDK/Runtime has supported Linux distribution-specific assets, +# then and only then should the Linux distribution appear in this list. +# Adding a Linux distribution to this list does not imply distribution-specific support. +get_legacy_os_name_from_platform() { + eval $invocation + + platform="$1" + case "$platform" in + "centos.7") + echo "centos" + return 0 + ;; + "debian.8") + echo "debian" + return 0 + ;; + "debian.9") + echo "debian.9" + return 0 + ;; + "fedora.23") + echo "fedora.23" + return 0 + ;; + "fedora.24") + echo "fedora.24" + return 0 + ;; + "fedora.27") + echo "fedora.27" + return 0 + ;; + "fedora.28") + echo "fedora.28" + return 0 + ;; + "opensuse.13.2") + echo "opensuse.13.2" + return 0 + ;; + "opensuse.42.1") + echo "opensuse.42.1" + return 0 + ;; + "opensuse.42.3") + echo "opensuse.42.3" + return 0 + ;; + "rhel.7"*) + echo "rhel" + return 0 + ;; + "ubuntu.14.04") + echo "ubuntu" + return 0 + ;; + "ubuntu.16.04") + echo "ubuntu.16.04" + return 0 + ;; + "ubuntu.16.10") + echo "ubuntu.16.10" + return 0 + ;; + "ubuntu.18.04") + echo "ubuntu.18.04" + return 0 + ;; + "alpine.3.4.3") + echo "alpine" + return 0 + ;; + esac + return 1 +} + +get_linux_platform_name() { + eval $invocation + + if [ -n "$runtime_id" ]; then + echo "${runtime_id%-*}" + return 0 + else + if [ -e /etc/os-release ]; then + . /etc/os-release + echo "$ID.$VERSION_ID" + return 0 + elif [ -e /etc/redhat-release ]; then + local redhatRelease=$( /dev/null 2>&1 + return $? +} + + +check_min_reqs() { + local hasMinimum=false + if machine_has "curl"; then + hasMinimum=true + elif machine_has "wget"; then + hasMinimum=true + fi + + if [ "$hasMinimum" = "false" ]; then + say_err "curl (recommended) or wget are required to download dotnet. Install missing prerequisite to proceed." + return 1 + fi + return 0 +} + +check_pre_reqs() { + eval $invocation + + if [ "${DOTNET_INSTALL_SKIP_PREREQS:-}" = "1" ]; then + return 0 + fi + + if [ "$(uname)" = "Linux" ]; then + if [ ! -x "$(command -v ldconfig)" ]; then + echo "ldconfig is not in PATH, trying /sbin/ldconfig." + LDCONFIG_COMMAND="/sbin/ldconfig" + else + LDCONFIG_COMMAND="ldconfig" + fi + + local librarypath=${LD_LIBRARY_PATH:-} + LDCONFIG_COMMAND="$LDCONFIG_COMMAND -NXv ${librarypath//:/ }" + + [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep libunwind)" ] && say_warning "Unable to locate libunwind. Probable prerequisite missing; please install libunwind." + [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep libssl)" ] && say_warning "Unable to locate libssl. Probable prerequisite missing; please install libssl." + [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep libicu)" ] && say_warning "Unable to locate libicu. Probable prerequisite missing; please install libicu." + [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep -F libcurl.so)" ] && say_warning "Unable to locate libcurl. Probable prerequisite missing; please install libcurl." + fi + + return 0 +} + +# args: +# input - $1 +to_lowercase() { + #eval $invocation + + echo "$1" | tr '[:upper:]' '[:lower:]' + return 0 +} + +# args: +# input - $1 +remove_trailing_slash() { + #eval $invocation + + local input="${1:-}" + echo "${input%/}" + return 0 +} + +# args: +# input - $1 +remove_beginning_slash() { + #eval $invocation + + local input="${1:-}" + echo "${input#/}" + return 0 +} + +# args: +# root_path - $1 +# child_path - $2 - this parameter can be empty +combine_paths() { + eval $invocation + + # TODO: Consider making it work with any number of paths. For now: + if [ ! -z "${3:-}" ]; then + say_err "combine_paths: Function takes two parameters." + return 1 + fi + + local root_path="$(remove_trailing_slash "$1")" + local child_path="$(remove_beginning_slash "${2:-}")" + say_verbose "combine_paths: root_path=$root_path" + say_verbose "combine_paths: child_path=$child_path" + echo "$root_path/$child_path" + return 0 +} + +get_machine_architecture() { + eval $invocation + + if command -v uname > /dev/null; then + CPUName=$(uname -m) + case $CPUName in + armv7l) + echo "arm" + return 0 + ;; + aarch64) + echo "arm64" + return 0 + ;; + esac + fi + + # Always default to 'x64' + echo "x64" + return 0 +} + +# args: +# architecture - $1 +get_normalized_architecture_from_architecture() { + eval $invocation + + local architecture="$(to_lowercase "$1")" + case "$architecture" in + \) + echo "$(get_normalized_architecture_from_architecture "$(get_machine_architecture)")" + return 0 + ;; + amd64|x64) + echo "x64" + return 0 + ;; + arm) + echo "arm" + return 0 + ;; + arm64) + echo "arm64" + return 0 + ;; + esac + + say_err "Architecture \`$architecture\` not supported. If you think this is a bug, please report it at https://github.com/dotnet/cli/issues" + return 1 +} + +# version_info is a conceptual two line string representing commit hash and 4-part version +# format: +# Line 1: # commit_hash +# Line 2: # 4-part version + +# args: +# version_text - stdin +get_version_from_version_info() { + eval $invocation + + cat | tail -n 1 | sed 's/\r$//' + return 0 +} + +# args: +# version_text - stdin +get_commit_hash_from_version_info() { + eval $invocation + + cat | head -n 1 | sed 's/\r$//' + return 0 +} + +# args: +# install_root - $1 +# relative_path_to_package - $2 +# specific_version - $3 +is_dotnet_package_installed() { + eval $invocation + + local install_root="$1" + local relative_path_to_package="$2" + local specific_version="${3//[$'\t\r\n']}" + + local dotnet_package_path="$(combine_paths "$(combine_paths "$install_root" "$relative_path_to_package")" "$specific_version")" + say_verbose "is_dotnet_package_installed: dotnet_package_path=$dotnet_package_path" + + if [ -d "$dotnet_package_path" ]; then + return 0 + else + return 1 + fi +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# coherent - $4 +get_latest_version_info() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local coherent="$4" + + local version_file_url=null + if [[ "$runtime" == "dotnet" ]]; then + version_file_url="$uncached_feed/Runtime/$channel/latest.version" + elif [[ "$runtime" == "aspnetcore" ]]; then + version_file_url="$uncached_feed/aspnetcore/Runtime/$channel/latest.version" + elif [ -z "$runtime" ]; then + if [ "$coherent" = true ]; then + version_file_url="$uncached_feed/Sdk/$channel/latest.coherent.version" + else + version_file_url="$uncached_feed/Sdk/$channel/latest.version" + fi + else + say_err "Invalid value for \$runtime" + return 1 + fi + say_verbose "get_latest_version_info: latest url: $version_file_url" + + download "$version_file_url" + return $? +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# version - $4 +get_specific_version_from_version() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local version="$(to_lowercase "$4")" + + case "$version" in + latest) + local version_info + version_info="$(get_latest_version_info "$azure_feed" "$channel" "$normalized_architecture" false)" || return 1 + say_verbose "get_specific_version_from_version: version_info=$version_info" + echo "$version_info" | get_version_from_version_info + return 0 + ;; + coherent) + local version_info + version_info="$(get_latest_version_info "$azure_feed" "$channel" "$normalized_architecture" true)" || return 1 + say_verbose "get_specific_version_from_version: version_info=$version_info" + echo "$version_info" | get_version_from_version_info + return 0 + ;; + *) + echo "$version" + return 0 + ;; + esac +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# specific_version - $4 +construct_download_link() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local specific_version="${4//[$'\t\r\n']}" + + local osname + osname="$(get_current_os_name)" || return 1 + + local download_link=null + if [[ "$runtime" == "dotnet" ]]; then + download_link="$azure_feed/Runtime/$specific_version/dotnet-runtime-$specific_version-$osname-$normalized_architecture.tar.gz" + elif [[ "$runtime" == "aspnetcore" ]]; then + download_link="$azure_feed/aspnetcore/Runtime/$specific_version/aspnetcore-runtime-$specific_version-$osname-$normalized_architecture.tar.gz" + elif [ -z "$runtime" ]; then + download_link="$azure_feed/Sdk/$specific_version/dotnet-sdk-$specific_version-$osname-$normalized_architecture.tar.gz" + else + return 1 + fi + + echo "$download_link" + return 0 +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# specific_version - $4 +construct_legacy_download_link() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local specific_version="${4//[$'\t\r\n']}" + + local distro_specific_osname + distro_specific_osname="$(get_legacy_os_name)" || return 1 + + local legacy_download_link=null + if [[ "$runtime" == "dotnet" ]]; then + legacy_download_link="$azure_feed/Runtime/$specific_version/dotnet-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz" + elif [ -z "$runtime" ]; then + legacy_download_link="$azure_feed/Sdk/$specific_version/dotnet-dev-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz" + else + return 1 + fi + + echo "$legacy_download_link" + return 0 +} + +get_user_install_path() { + eval $invocation + + if [ ! -z "${DOTNET_INSTALL_DIR:-}" ]; then + echo "$DOTNET_INSTALL_DIR" + else + echo "$HOME/.dotnet" + fi + return 0 +} + +# args: +# install_dir - $1 +resolve_installation_path() { + eval $invocation + + local install_dir=$1 + if [ "$install_dir" = "" ]; then + local user_install_path="$(get_user_install_path)" + say_verbose "resolve_installation_path: user_install_path=$user_install_path" + echo "$user_install_path" + return 0 + fi + + echo "$install_dir" + return 0 +} + +# args: +# install_root - $1 +get_installed_version_info() { + eval $invocation + + local install_root="$1" + local version_file="$(combine_paths "$install_root" "$local_version_file_relative_path")" + say_verbose "Local version file: $version_file" + if [ ! -z "$version_file" ] | [ -r "$version_file" ]; then + local version_info="$(cat "$version_file")" + echo "$version_info" + return 0 + fi + + say_verbose "Local version file not found." + return 0 +} + +# args: +# relative_or_absolute_path - $1 +get_absolute_path() { + eval $invocation + + local relative_or_absolute_path=$1 + echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")" + return 0 +} + +# args: +# input_files - stdin +# root_path - $1 +# out_path - $2 +# override - $3 +copy_files_or_dirs_from_list() { + eval $invocation + + local root_path="$(remove_trailing_slash "$1")" + local out_path="$(remove_trailing_slash "$2")" + local override="$3" + local osname="$(get_current_os_name)" + local override_switch=$( + if [ "$override" = false ]; then + if [[ "$osname" == "linux-musl" ]]; then + printf -- "-u"; + else + printf -- "-n"; + fi + fi) + cat | uniq | while read -r file_path; do + local path="$(remove_beginning_slash "${file_path#$root_path}")" + local target="$out_path/$path" + if [ "$override" = true ] || (! ([ -d "$target" ] || [ -e "$target" ])); then + mkdir -p "$out_path/$(dirname "$path")" + cp -R $override_switch "$root_path/$path" "$target" + fi + done +} +# args: +# zip_path - $1 +# out_path - $2 +extract_dotnet_package() { + eval $invocation + local zip_path="$1" + local out_path="$2" + local temp_out_path="$(mktemp -d "$temporary_file_template")" + local failed=false + tar -xzf "$zip_path" -C "$temp_out_path" > /dev/null || failed=true + local folders_with_version_regex='^.*/[0-9]+\.[0-9]+[^/]+/' + find "$temp_out_path" -type f | grep -Eo "$folders_with_version_regex" | sort | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" false + find "$temp_out_path" -type f | grep -Ev "$folders_with_version_regex" | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" "$override_non_versioned_files" + rm -rf "$temp_out_path" + if [ "$failed" = true ]; then + say_err "Extraction failed" + return 1 + fi +} +# args: +# remote_path - $1 +# [out_path] - $2 - stdout if not provided +download() { + eval $invocation + local remote_path="$1" + local out_path="${2:-}" + if [[ "$remote_path" != "http"* ]]; then + cp "$remote_path" "$out_path" + return $? + fi + local failed=false + if machine_has "curl"; then + downloadcurl "$remote_path" "$out_path" || failed=true + elif machine_has "wget"; then + downloadwget "$remote_path" "$out_path" || failed=true + else + failed=true + fi + if [ "$failed" = true ]; then + say_verbose "Download failed: $remote_path" + return 1 + fi + return 0 +} +downloadcurl() { + eval $invocation + local remote_path="$1" + local out_path="${2:-}" + # Append feed_credential as late as possible before calling curl to avoid logging feed_credential + remote_path="${remote_path}${feed_credential}" + local failed=false + if [ -z "$out_path" ]; then + curl --retry 10 -sSL -f --create-dirs "$remote_path" || failed=true + else + curl --retry 10 -sSL -f --create-dirs -o "$out_path" "$remote_path" || failed=true + fi + if [ "$failed" = true ]; then + say_verbose "Curl download failed" + return 1 + fi + return 0 +} +downloadwget() { + eval $invocation + local remote_path="$1" + local out_path="${2:-}" + # Append feed_credential as late as possible before calling wget to avoid logging feed_credential + remote_path="${remote_path}${feed_credential}" + local failed=false + if [ -z "$out_path" ]; then + wget -q --tries 10 -O - "$remote_path" || failed=true + else + wget --tries 10 -O "$out_path" "$remote_path" || failed=true + fi + if [ "$failed" = true ]; then + say_verbose "Wget download failed" + return 1 + fi + return 0 +} +calculate_vars() { + eval $invocation + valid_legacy_download_link=true + normalized_architecture="$(get_normalized_architecture_from_architecture "$architecture")" + say_verbose "normalized_architecture=$normalized_architecture" + specific_version="$(get_specific_version_from_version "$azure_feed" "$channel" "$normalized_architecture" "$version")" + say_verbose "specific_version=$specific_version" + if [ -z "$specific_version" ]; then + say_err "Could not get version information." + return 1 + fi + download_link="$(construct_download_link "$azure_feed" "$channel" "$normalized_architecture" "$specific_version")" + say_verbose "download_link=$download_link" + legacy_download_link="$(construct_legacy_download_link "$azure_feed" "$channel" "$normalized_architecture" "$specific_version")" || valid_legacy_download_link=false + if [ "$valid_legacy_download_link" = true ]; then + say_verbose "legacy_download_link=$legacy_download_link" + else + say_verbose "Cound not construct a legacy_download_link; omitting..." + fi + install_root="$(resolve_installation_path "$install_dir")" + say_verbose "install_root=$install_root" +} +install_dotnet() { + eval $invocation + local download_failed=false + local asset_name='' + local asset_relative_path='' + if [[ "$runtime" == "dotnet" ]]; then + asset_relative_path="shared/Microsoft.NETCore.App" + asset_name=".NET Core Runtime" + elif [[ "$runtime" == "aspnetcore" ]]; then + asset_relative_path="shared/Microsoft.AspNetCore.App" + asset_name="ASP.NET Core Runtime" + elif [ -z "$runtime" ]; then + asset_relative_path="sdk" + asset_name=".NET Core SDK" + else + say_err "Invalid value for \$runtime" + return 1 + fi + # Check if the SDK version is already installed. + if is_dotnet_package_installed "$install_root" "$asset_relative_path" "$specific_version"; then + say "$asset_name version $specific_version is already installed." + return 0 + fi + mkdir -p "$install_root" + zip_path="$(mktemp "$temporary_file_template")" + say_verbose "Zip path: $zip_path" + say "Downloading link: $download_link" + # Failures are normal in the non-legacy case for ultimately legacy downloads. + # Do not output to stderr, since output to stderr is considered an error. + download "$download_link" "$zip_path" 2>&1 || download_failed=true + # if the download fails, download the legacy_download_link + if [ "$download_failed" = true ]; then + say "Cannot download: $download_link" + if [ "$valid_legacy_download_link" = true ]; then + download_failed=false + download_link="$legacy_download_link" + zip_path="$(mktemp "$temporary_file_template")" + say_verbose "Legacy zip path: $zip_path" + say "Downloading legacy link: $download_link" + download "$download_link" "$zip_path" 2>&1 || download_failed=true + fi + fi + if [ "$download_failed" = true ]; then + say_err "Could not download $asset_name version $specific_version" + return 1 + fi + say "Extracting zip from $download_link" + extract_dotnet_package "$zip_path" "$install_root" + # Check if the SDK version is now installed; if not, fail the installation. + if ! is_dotnet_package_installed "$install_root" "$asset_relative_path" "$specific_version"; then + say_err "$asset_name version $specific_version failed to install with an unknown error." + return 1 + fi + return 0 +} +local_version_file_relative_path="/.version" +bin_folder_relative_path="" +temporary_file_template="${TMPDIR:-/tmp}/dotnet.XXXXXXXXX" +channel="LTS" +version="Latest" +install_dir="" +architecture="" +dry_run=false +no_path=false +no_cdn=false +azure_feed="https://dotnetcli.azureedge.net/dotnet" +uncached_feed="https://dotnetcli.blob.core.windows.net/dotnet" +feed_credential="" +verbose=false +runtime="" +runtime_id="" +override_non_versioned_files=true +while [ $# -ne 0 ] +do + name="$1" + case "$name" in + -c|--channel|-[Cc]hannel) + shift + channel="$1" + ;; + -v|--version|-[Vv]ersion) + shift + version="$1" + ;; + -i|--install-dir|-[Ii]nstall[Dd]ir) + shift + install_dir="$1" + ;; + --arch|--architecture|-[Aa]rch|-[Aa]rchitecture) + shift + architecture="$1" + ;; + --shared-runtime|-[Ss]hared[Rr]untime) + say_warning "The --shared-runtime flag is obsolete and may be removed in a future version of this script. The recommended usage is to specify '--runtime dotnet'." + if [ -z "$runtime" ]; then + runtime="dotnet" + fi + ;; + --runtime|-[Rr]untime) + shift + runtime="$1" + if [[ "$runtime" != "dotnet" ]] && [[ "$runtime" != "aspnetcore" ]]; then + say_err "Unsupported value for --runtime: '$1'. Valid values are 'dotnet' and 'aspnetcore'." + exit 1 + fi + ;; + --dry-run|-[Dd]ry[Rr]un) + dry_run=true + ;; + --no-path|-[Nn]o[Pp]ath) + no_path=true + ;; + --verbose|-[Vv]erbose) + verbose=true + ;; + --no-cdn|-[Nn]o[Cc]dn) + no_cdn=true + ;; + --azure-feed|-[Aa]zure[Ff]eed) + shift + azure_feed="$1" + ;; + --uncached-feed|-[Uu]ncached[Ff]eed) + shift + uncached_feed="$1" + ;; + --feed-credential|-[Ff]eed[Cc]redential) + shift + feed_credential="$1" + ;; + --runtime-id|-[Rr]untime[Ii]d) + shift + runtime_id="$1" + ;; + --skip-non-versioned-files|-[Ss]kip[Nn]on[Vv]ersioned[Ff]iles) + override_non_versioned_files=false + ;; + -?|--?|-h|--help|-[Hh]elp) + script_name="$(basename "$0")" + echo ".NET Tools Installer" + echo "Usage: $script_name [-c|--channel ] [-v|--version ] [-p|--prefix ]" + echo " $script_name -h|-?|--help" + echo "" + echo "$script_name is a simple command line interface for obtaining dotnet cli." + echo "" + echo "Options:" + echo " -c,--channel Download from the channel specified, Defaults to \`$channel\`." + echo " -Channel" + echo " Possible values:" + echo " - Current - most current release" + echo " - LTS - most current supported release" + echo " - 2-part version in a format A.B - represents a specific release" + echo " examples: 2.0; 1.0" + echo " - Branch name" + echo " examples: release/2.0.0; Master" + echo " -v,--version Use specific VERSION, Defaults to \`$version\`." + echo " -Version" + echo " Possible values:" + echo " - latest - most latest build on specific channel" + echo " - coherent - most latest coherent build on specific channel" + echo " coherent applies only to SDK downloads" + echo " - 3-part version in a format A.B.C - represents specific version of build" + echo " examples: 2.0.0-preview2-006120; 1.1.0" + echo " -i,--install-dir Install under specified location (see Install Location below)" + echo " -InstallDir" + echo " --architecture Architecture of dotnet binaries to be installed, Defaults to \`$architecture\`." + echo " --arch,-Architecture,-Arch" + echo " Possible values: x64, arm, and arm64" + echo " --runtime Installs a shared runtime only, without the SDK." + echo " -Runtime" + echo " Possible values:" + echo " - dotnet - the Microsoft.NETCore.App shared runtime" + echo " - aspnetcore - the Microsoft.AspNetCore.App shared runtime" + echo " --skip-non-versioned-files Skips non-versioned files if they already exist, such as the dotnet executable." + echo " -SkipNonVersionedFiles" + echo " --dry-run,-DryRun Do not perform installation. Display download link." + echo " --no-path, -NoPath Do not set PATH for the current process." + echo " --verbose,-Verbose Display diagnostics information." + echo " --azure-feed,-AzureFeed Azure feed location. Defaults to $azure_feed, This parameter typically is not changed by the user." + echo " --uncached-feed,-UncachedFeed Uncached feed location. This parameter typically is not changed by the user." + echo " --no-cdn,-NoCdn Disable downloading from the Azure CDN, and use the uncached feed directly." + echo " --feed-credential,-FeedCredential Azure feed shared access token. This parameter typically is not specified." + echo " --runtime-id Installs the .NET Tools for the given platform (use linux-x64 for portable linux)." + echo " -RuntimeId" + echo " -?,--?,-h,--help,-Help Shows this help message" + echo "" + echo "Obsolete parameters:" + echo " --shared-runtime The recommended alternative is '--runtime dotnet'." + echo " -SharedRuntime Installs just the shared runtime bits, not the entire SDK." + echo "" + echo "Install Location:" + echo " Location is chosen in following order:" + echo " - --install-dir option" + echo " - Environmental variable DOTNET_INSTALL_DIR" + echo " - $HOME/.dotnet" + exit 0 + ;; + *) + say_err "Unknown argument \`$name\`" + exit 1 + ;; + esac + shift +done +if [ "$no_cdn" = true ]; then + azure_feed="$uncached_feed" +fi +check_min_reqs +calculate_vars +if [ "$dry_run" = true ]; then + say "Payload URL: $download_link" + if [ "$valid_legacy_download_link" = true ]; then + say "Legacy payload URL: $legacy_download_link" + fi + say "Repeatable invocation: ./$(basename "$0") --version $specific_version --channel $channel --install-dir $install_dir" + exit 0 +fi +check_pre_reqs +install_dotnet +bin_path="$(get_absolute_path "$(combine_paths "$install_root" "$bin_folder_relative_path")")" +if [ "$no_path" = false ]; then + say "Adding to current process PATH: \`$bin_path\`. Note: This change will be visible only when sourcing script." + export PATH="$bin_path":"$PATH" +else + say "Binaries of dotnet can be found in $bin_path" +fi +say "Installation finished successfully." diff --git a/eng/repo.props b/eng/repo.props new file mode 100644 index 00000000000..f936dffb838 --- /dev/null +++ b/eng/repo.props @@ -0,0 +1,6 @@ + + + + + + diff --git a/build/repo.targets b/eng/repo.targets similarity index 68% rename from build/repo.targets rename to eng/repo.targets index 6694fa5ab4e..1ad51445c5f 100644 --- a/build/repo.targets +++ b/eng/repo.targets @@ -1,4 +1,8 @@ + + + + @@ -28,7 +32,7 @@ $(MSBuildThisFileDirectory)..\eng\ProjectReferences.props + @(_ProjectReferenceProvider->'', '%0A ') @@ -40,4 +44,21 @@ + + + + <_Temp Remove="@(_Temp)" /> + <_Temp Include="@(ProjectToBuild)"/> + + + + + + + + + + @(ProjectToBuild->'%(FullPath)') + + diff --git a/eng/targets/ResolveReferences.targets b/eng/targets/ResolveReferences.targets index b3e4a4fff7f..07c3db8aeb0 100644 --- a/eng/targets/ResolveReferences.targets +++ b/eng/targets/ResolveReferences.targets @@ -34,7 +34,6 @@ <_ImplicitPackageReference Include="@(PackageReference->WithMetadataValue('IsImplicitlyDefined', 'true'))" /> <_ExplicitPackageReference Include="@(PackageReference)" Exclude="@(_ImplicitPackageReference)" /> - <_ExplicitPackageReference Remove="Internal.AspNetCore.Sdk" /> diff --git a/eng/templates/default-build.yml b/eng/templates/default-build.yml deleted file mode 100644 index b2b444e4af3..00000000000 --- a/eng/templates/default-build.yml +++ /dev/null @@ -1,135 +0,0 @@ -# default-build.yml -# -# Description: Defines a build phase for invoking build.sh/cmd -# -# Parameters: -# configuration: string -# Release or Debug -# agentOs: string -# Used in templates to define variables which are OS specific. Typically from the set { Windows, Linux, macOS } -# buildArgs: string -# Additional arguments to pass to the build.sh/cmd script. -# Note: -ci is always passed -# artifacts: -# publish: boolean -# Should artifacts be published -# path: string -# The file path to artifacts output -# name: string -# The name of the artifact container -# codeSign: boolean -# This build definition is enabled for code signing. (Only applies to Windows) - -# -# See https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema for details -# - -parameters: - agentOs: 'Windows' - poolName: '' - buildArgs: '' - configuration: 'Release' - codeSign: false - publishToBar: false - artifacts: - publish: false - name: '' - path: 'artifacts/' - -jobs: -- job: ${{ parameters.agentOs }} - # Double the default timeout. Publishing is subject to huge delays due to contention on the dotnet-core blob feed - timeoutInMinutes: 120 - workspace: - clean: all - # Map friendly OS names to the right queue - # See https://github.com/dotnet/arcade/blob/master/Documentation/ChoosingAMachinePool.md - pool: - ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'macOS')) }}: - name: Hosted macOS - vmImage: macOS-10.13 - ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Linux')) }}: - name: Hosted Ubuntu 1604 - vmImage: ubuntu-16.04 - ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Windows')) }}: - ${{ if ne(variables['System.TeamProject'], 'internal') }}: - name: Hosted VS2017 - vmImage: vs2017-win2016 - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: dotnet-internal-temp - variables: - - name: KOREBUILD_KEEPGLOBALJSON - value: 1 - - name: AgentOsName - value: ${{ parameters.agentOs }} - - name: ASPNETCORE_TEST_LOG_MAXPATH - value: "200" # Keep test log file name length low enough for artifact zipping - - name: DOTNET_HOME - value: $(Agent.WorkFolder)/.dotnet - - name: BuildScriptArgs - value: ${{ parameters.buildArgs }} - - name: BuildConfiguration - value: ${{ parameters.configuration }} - - name: VSTS_OVERWRITE_TEMP - value: false # Workaround for https://github.com/dotnet/core-eng/issues/2812 - - ${{ if or(ne(parameters.codeSign, 'true'), ne(variables['System.TeamProject'], 'internal')) }}: - - name: _SignType - value: '' - - ${{ if and(eq(parameters.codeSign, 'true'), eq(variables['System.TeamProject'], 'internal')) }}: - - name: TeamName - value: AspNetCore - - name: _SignType - value: real - - group: DotNet-Blob-Feed - steps: - - checkout: self - clean: true - - ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows'), eq(parameters.codeSign, 'true')) }}: - - task: MicroBuildSigningPlugin@1 - displayName: Install MicroBuild Signing plugin - condition: and(succeeded(), in(variables['_SignType'], 'test', 'real')) - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - - ${{ if eq(parameters.agentOs, 'Windows') }}: - - script: .\build.cmd -ci /p:SignType=$(_SignType) /p:Configuration=$(BuildConfiguration) $(BuildScriptArgs) - displayName: Run build.cmd - - ${{ if ne(parameters.agentOs, 'Windows') }}: - - script: ./build.sh -ci -p:Configuration=$(BuildConfiguration) $(BuildScriptArgs) - displayName: Run build.sh - - task: PublishTestResults@2 - displayName: Publish test results - condition: always() - inputs: - testRunTitle: $(AgentOsName)-$(BuildConfiguration) - testRunner: vstest - testResultsFiles: 'artifacts/logs/**/*.trx' - mergeTestResults: true - - ${{ if eq(parameters.artifacts.publish, 'true') }}: - - task: PublishBuildArtifacts@1 - displayName: Upload artifacts - condition: eq(variables['system.pullrequest.isfork'], false) - inputs: - pathtoPublish: ${{ parameters.artifacts.path }} - ${{ if eq(parameters.artifacts.name, '') }}: - artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration) - ${{ if ne(parameters.artifacts.name, '') }}: - artifactName: ${{ parameters.artifacts.name }} - artifactType: Container - parallel: true - - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.publishToBar, 'true')) }}: - - script: build.cmd -ci /t:PublishToBAR /p:AzureAccountKey=$(dotnetfeed-storage-access-key-1) /p:AzureFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json /p:DotNetPublishToBlobFeed=true - displayName: Publish packages to dotnet-core feed - - task: AzureKeyVault@1 - inputs: - azureSubscription: 'DotNet-Engineering-Services_KeyVault' - KeyVaultName: EngKeyVault - SecretsFilter: 'MaestroAccessToken' - displayName: Fetch secrets from KeyVault - - script: eng\common\publishbuildassets.cmd /p:ManifestsPath='$(Build.SourcesDirectory)/artifacts/AssetManifest/' /p:BuildAssetRegistryToken=$(MaestroAccessToken) /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com /p:Configuration=$(BuildConfiguration) - displayName: Register Build Assets with Maestro - - ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows')) }}: - - task: MicroBuildCleanup@1 - displayName: Cleanup MicroBuild tasks - condition: always() diff --git a/eng/tools/BaselineGenerator/BaselineGenerator.csproj b/eng/tools/BaselineGenerator/BaselineGenerator.csproj index cdf623fc682..23c39b7730f 100644 --- a/eng/tools/BaselineGenerator/BaselineGenerator.csproj +++ b/eng/tools/BaselineGenerator/BaselineGenerator.csproj @@ -1,5 +1,4 @@ - Exe netcoreapp2.1 diff --git a/eng/tools/Directory.Build.props b/eng/tools/Directory.Build.props index ed56064c9c1..b4e8ffffd89 100644 --- a/eng/tools/Directory.Build.props +++ b/eng/tools/Directory.Build.props @@ -1,3 +1,3 @@  - + diff --git a/korebuild-lock.txt b/korebuild-lock.txt deleted file mode 100644 index af862c80b06..00000000000 --- a/korebuild-lock.txt +++ /dev/null @@ -1,2 +0,0 @@ -version:3.0.0-build-20190105.1 -commithash:f61a6ea29c9697719acc53326726dfbe7acee915 diff --git a/korebuild.json b/korebuild.json deleted file mode 100644 index 8a276a7f35d..00000000000 --- a/korebuild.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/master/tools/korebuild.schema.json", - "channel": "master" -} diff --git a/src/Caching/Abstractions/Directory.Build.props b/src/Caching/Abstractions/Directory.Build.props index f25c1d90ce8..e97b192d02f 100644 --- a/src/Caching/Abstractions/Directory.Build.props +++ b/src/Caching/Abstractions/Directory.Build.props @@ -3,5 +3,6 @@ true + true diff --git a/src/Caching/Memory/src/Microsoft.Extensions.Caching.Memory.csproj b/src/Caching/Memory/src/Microsoft.Extensions.Caching.Memory.csproj index 10c48ef6da8..e8b9e95dc8c 100644 --- a/src/Caching/Memory/src/Microsoft.Extensions.Caching.Memory.csproj +++ b/src/Caching/Memory/src/Microsoft.Extensions.Caching.Memory.csproj @@ -6,8 +6,13 @@ $(NoWarn);CS1591 true cache;memorycache + true + + + + diff --git a/src/Caching/Memory/src/Properties/AssemblyInfo.cs b/src/Caching/Memory/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 4f93c2ee4b4..00000000000 --- a/src/Caching/Memory/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Caching.Memory.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Caching/SqlServer/src/Microsoft.Extensions.Caching.SqlServer.csproj b/src/Caching/SqlServer/src/Microsoft.Extensions.Caching.SqlServer.csproj index b69c94d293a..fb118c1a30a 100644 --- a/src/Caching/SqlServer/src/Microsoft.Extensions.Caching.SqlServer.csproj +++ b/src/Caching/SqlServer/src/Microsoft.Extensions.Caching.SqlServer.csproj @@ -9,8 +9,13 @@ false + true + + + + diff --git a/src/Caching/SqlServer/src/Properties/AssemblyInfo.cs b/src/Caching/SqlServer/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 61f046388ca..00000000000 --- a/src/Caching/SqlServer/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,8 +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.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Caching.SqlServer.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Caching/StackExchangeRedis/src/Microsoft.Extensions.Caching.StackExchangeRedis.csproj b/src/Caching/StackExchangeRedis/src/Microsoft.Extensions.Caching.StackExchangeRedis.csproj index eb6c5d2a8cb..f972f80c7e6 100644 --- a/src/Caching/StackExchangeRedis/src/Microsoft.Extensions.Caching.StackExchangeRedis.csproj +++ b/src/Caching/StackExchangeRedis/src/Microsoft.Extensions.Caching.StackExchangeRedis.csproj @@ -6,6 +6,7 @@ $(NoWarn);CS1591 true cache;distributedcache;redis + true diff --git a/src/Configuration/Config.Abstractions/src/Microsoft.Extensions.Configuration.Abstractions.csproj b/src/Configuration/Config.Abstractions/src/Microsoft.Extensions.Configuration.Abstractions.csproj index 8462647cc69..5497a435643 100644 --- a/src/Configuration/Config.Abstractions/src/Microsoft.Extensions.Configuration.Abstractions.csproj +++ b/src/Configuration/Config.Abstractions/src/Microsoft.Extensions.Configuration.Abstractions.csproj @@ -9,6 +9,7 @@ Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection + true diff --git a/src/Configuration/Config.AzureKeyVault/src/Microsoft.Extensions.Configuration.AzureKeyVault.csproj b/src/Configuration/Config.AzureKeyVault/src/Microsoft.Extensions.Configuration.AzureKeyVault.csproj index 2510f0982fd..a108e5156bc 100644 --- a/src/Configuration/Config.AzureKeyVault/src/Microsoft.Extensions.Configuration.AzureKeyVault.csproj +++ b/src/Configuration/Config.AzureKeyVault/src/Microsoft.Extensions.Configuration.AzureKeyVault.csproj @@ -4,8 +4,13 @@ Azure KeyVault configuration provider implementation for Microsoft.Extensions.Configuration. netstandard2.0 $(PackageTags);azure;keyvault + true + + + + diff --git a/src/Configuration/Config.AzureKeyVault/src/Properties/AssemblyInfo.cs b/src/Configuration/Config.AzureKeyVault/src/Properties/AssemblyInfo.cs index 4680acb1dc7..d77af5dc957 100644 --- a/src/Configuration/Config.AzureKeyVault/src/Properties/AssemblyInfo.cs +++ b/src/Configuration/Config.AzureKeyVault/src/Properties/AssemblyInfo.cs @@ -1,8 +1,6 @@ // 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.Runtime.CompilerServices; -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.AzureKeyVault.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] diff --git a/src/Configuration/Config.Binder/src/Microsoft.Extensions.Configuration.Binder.csproj b/src/Configuration/Config.Binder/src/Microsoft.Extensions.Configuration.Binder.csproj index c9907e5cb95..e966d7790cf 100644 --- a/src/Configuration/Config.Binder/src/Microsoft.Extensions.Configuration.Binder.csproj +++ b/src/Configuration/Config.Binder/src/Microsoft.Extensions.Configuration.Binder.csproj @@ -3,8 +3,13 @@ Functionality to bind an object to data in configuration providers for Microsoft.Extensions.Configuration. netstandard2.0 + true + + + + diff --git a/src/Configuration/Config.Binder/src/Properties/AssemblyInfo.cs b/src/Configuration/Config.Binder/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 0b09b6109b0..00000000000 --- a/src/Configuration/Config.Binder/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.Binder.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] - diff --git a/src/Configuration/Config.CommandLine/src/Microsoft.Extensions.Configuration.CommandLine.csproj b/src/Configuration/Config.CommandLine/src/Microsoft.Extensions.Configuration.CommandLine.csproj index 01333469a72..40735c8422f 100644 --- a/src/Configuration/Config.CommandLine/src/Microsoft.Extensions.Configuration.CommandLine.csproj +++ b/src/Configuration/Config.CommandLine/src/Microsoft.Extensions.Configuration.CommandLine.csproj @@ -4,8 +4,13 @@ Command line configuration provider implementation for Microsoft.Extensions.Configuration. netstandard2.0 $(PackageTags);commandline + true + + + + diff --git a/src/Configuration/Config.CommandLine/src/Properties/AssemblyInfo.cs b/src/Configuration/Config.CommandLine/src/Properties/AssemblyInfo.cs deleted file mode 100644 index cbed6537583..00000000000 --- a/src/Configuration/Config.CommandLine/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.CommandLine.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] - diff --git a/src/Configuration/Config.EnvironmentVariables/src/Microsoft.Extensions.Configuration.EnvironmentVariables.csproj b/src/Configuration/Config.EnvironmentVariables/src/Microsoft.Extensions.Configuration.EnvironmentVariables.csproj index 33501d496f1..be6017a3f39 100644 --- a/src/Configuration/Config.EnvironmentVariables/src/Microsoft.Extensions.Configuration.EnvironmentVariables.csproj +++ b/src/Configuration/Config.EnvironmentVariables/src/Microsoft.Extensions.Configuration.EnvironmentVariables.csproj @@ -4,8 +4,13 @@ Environment variables configuration provider implementation for Microsoft.Extensions.Configuration. netstandard2.0 $(PackageTags);envvar;environmentvariable + true + + + + diff --git a/src/Configuration/Config.EnvironmentVariables/src/Properties/AssemblyInfo.cs b/src/Configuration/Config.EnvironmentVariables/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 26f9f3e3a93..00000000000 --- a/src/Configuration/Config.EnvironmentVariables/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.EnvironmentVariables.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] - diff --git a/src/Configuration/Config.FileExtensions/src/Microsoft.Extensions.Configuration.FileExtensions.csproj b/src/Configuration/Config.FileExtensions/src/Microsoft.Extensions.Configuration.FileExtensions.csproj index af8591bb097..dc0c7536b61 100644 --- a/src/Configuration/Config.FileExtensions/src/Microsoft.Extensions.Configuration.FileExtensions.csproj +++ b/src/Configuration/Config.FileExtensions/src/Microsoft.Extensions.Configuration.FileExtensions.csproj @@ -3,8 +3,13 @@ Extension methods for configuring file-based configuration providers for Microsoft.Extensions.Configuration. netstandard2.0 + true + + + + diff --git a/src/Configuration/Config.FileExtensions/src/Properties/AssemblyInfo.cs b/src/Configuration/Config.FileExtensions/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 14a9dc7a3df..00000000000 --- a/src/Configuration/Config.FileExtensions/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.FileExtensions.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] - diff --git a/src/Configuration/Config.Ini/src/Microsoft.Extensions.Configuration.Ini.csproj b/src/Configuration/Config.Ini/src/Microsoft.Extensions.Configuration.Ini.csproj index 8c0032d6539..39533f64e59 100644 --- a/src/Configuration/Config.Ini/src/Microsoft.Extensions.Configuration.Ini.csproj +++ b/src/Configuration/Config.Ini/src/Microsoft.Extensions.Configuration.Ini.csproj @@ -4,8 +4,13 @@ INI configuration provider implementation for Microsoft.Extensions.Configuration. netstandard2.0 $(PackageTags);ini + true + + + + diff --git a/src/Configuration/Config.Ini/src/Properties/AssemblyInfo.cs b/src/Configuration/Config.Ini/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 643b15312a1..00000000000 --- a/src/Configuration/Config.Ini/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.Ini.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] - diff --git a/src/Configuration/Config.Json/src/Microsoft.Extensions.Configuration.Json.csproj b/src/Configuration/Config.Json/src/Microsoft.Extensions.Configuration.Json.csproj index 967200081fe..fd79783bdef 100644 --- a/src/Configuration/Config.Json/src/Microsoft.Extensions.Configuration.Json.csproj +++ b/src/Configuration/Config.Json/src/Microsoft.Extensions.Configuration.Json.csproj @@ -4,8 +4,13 @@ JSON configuration provider implementation for Microsoft.Extensions.Configuration. netstandard2.0 $(PackageTags);json + true + + + + diff --git a/src/Configuration/Config.Json/src/Properties/AssemblyInfo.cs b/src/Configuration/Config.Json/src/Properties/AssemblyInfo.cs deleted file mode 100644 index fd57c913fea..00000000000 --- a/src/Configuration/Config.Json/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.Json.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] - diff --git a/src/Configuration/Config.KeyPerFile/src/Microsoft.Extensions.Configuration.KeyPerFile.csproj b/src/Configuration/Config.KeyPerFile/src/Microsoft.Extensions.Configuration.KeyPerFile.csproj index 4eb19f32937..82784d0eed8 100644 --- a/src/Configuration/Config.KeyPerFile/src/Microsoft.Extensions.Configuration.KeyPerFile.csproj +++ b/src/Configuration/Config.KeyPerFile/src/Microsoft.Extensions.Configuration.KeyPerFile.csproj @@ -4,6 +4,7 @@ Configuration provider that uses files in a directory for Microsoft.Extensions.Configuration. netstandard2.0 false + true diff --git a/src/Configuration/Config.UserSecrets/src/Microsoft.Extensions.Configuration.UserSecrets.csproj b/src/Configuration/Config.UserSecrets/src/Microsoft.Extensions.Configuration.UserSecrets.csproj index ef913550a38..8705a3fe8fc 100644 --- a/src/Configuration/Config.UserSecrets/src/Microsoft.Extensions.Configuration.UserSecrets.csproj +++ b/src/Configuration/Config.UserSecrets/src/Microsoft.Extensions.Configuration.UserSecrets.csproj @@ -4,8 +4,13 @@ User secrets configuration provider implementation for Microsoft.Extensions.Configuration. netstandard2.0 $(PackageTags);secrets;usersecrets + true + + + + diff --git a/src/Configuration/Config.UserSecrets/src/Properties/AssemblyInfo.cs b/src/Configuration/Config.UserSecrets/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 74683a8406b..00000000000 --- a/src/Configuration/Config.UserSecrets/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.UserSecrets.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Configuration/Config.UserSecrets/test/MsBuildTargetTest.cs b/src/Configuration/Config.UserSecrets/test/MsBuildTargetTest.cs index 020318d7d57..595da49cd84 100644 --- a/src/Configuration/Config.UserSecrets/test/MsBuildTargetTest.cs +++ b/src/Configuration/Config.UserSecrets/test/MsBuildTargetTest.cs @@ -95,6 +95,21 @@ open System break; } + foreach (var file in new[] { Path.Join(_tempDir, "Directory.Build.props"), Path.Join(_tempDir, "Directory.Build.targets") }) + { + if (!File.Exists(file)) + { + using (var fileStream = File.CreateText(file)) + { + fileStream.WriteLine(@" + + + +"); + } + } + } + var assemblyInfoFile = Path.Combine(_tempDir, $"obj/Debug/{testTfm}/test.AssemblyInfo" + sourceExt); AssertDotNet("restore"); @@ -103,7 +118,7 @@ open System AssertDotNet("build --configuration Debug"); - Assert.True(File.Exists(assemblyInfoFile), $"{assemblyInfoFile} should not exist but does not"); + Assert.True(File.Exists(assemblyInfoFile), $"{assemblyInfoFile} should exist but does not"); var contents = File.ReadAllText(assemblyInfoFile); Assert.Contains("assembly: Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute(\"xyz123\")", contents); var lastWrite = new FileInfo(assemblyInfoFile).LastWriteTimeUtc; @@ -134,10 +149,12 @@ void LogData(object obj, DataReceivedEventArgs e) StartInfo = processInfo }; process.OutputDataReceived += LogData; + process.ErrorDataReceived += LogData; process.Start(); process.BeginOutputReadLine(); process.WaitForExit(); process.OutputDataReceived -= LogData; + process.ErrorDataReceived -= LogData; Assert.Equal(0, process.ExitCode); } diff --git a/src/Configuration/Config.Xml/src/Microsoft.Extensions.Configuration.Xml.csproj b/src/Configuration/Config.Xml/src/Microsoft.Extensions.Configuration.Xml.csproj index 7fdc3bdd1de..c7b0436f803 100644 --- a/src/Configuration/Config.Xml/src/Microsoft.Extensions.Configuration.Xml.csproj +++ b/src/Configuration/Config.Xml/src/Microsoft.Extensions.Configuration.Xml.csproj @@ -4,8 +4,13 @@ XML configuration provider implementation for Microsoft.Extensions.Configuration. netstandard2.0 $(PackageTags);xml + true + + + + @@ -13,4 +18,3 @@ - diff --git a/src/Configuration/Config.Xml/src/Properties/AssemblyInfo.cs b/src/Configuration/Config.Xml/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 0167d5f561d..00000000000 --- a/src/Configuration/Config.Xml/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.Xml.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] - diff --git a/src/Configuration/Config/src/Microsoft.Extensions.Configuration.csproj b/src/Configuration/Config/src/Microsoft.Extensions.Configuration.csproj index 206aeb9f4a1..3d43b315b11 100644 --- a/src/Configuration/Config/src/Microsoft.Extensions.Configuration.csproj +++ b/src/Configuration/Config/src/Microsoft.Extensions.Configuration.csproj @@ -3,8 +3,13 @@ Implementation of key-value pair based configuration for Microsoft.Extensions.Configuration. Includes the memory configuration provider. netstandard2.0 + true + + + + diff --git a/src/Configuration/Config/src/Properties/AssemblyInfo.cs b/src/Configuration/Config/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 7e380883e02..00000000000 --- a/src/Configuration/Config/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] - diff --git a/src/Configuration/Directory.Build.props b/src/Configuration/Directory.Build.props index 2082380096b..fe35a9faec6 100644 --- a/src/Configuration/Directory.Build.props +++ b/src/Configuration/Directory.Build.props @@ -2,7 +2,7 @@ - true + true configuration diff --git a/src/DependencyInjection/DI.Abstractions/src/Microsoft.Extensions.DependencyInjection.Abstractions.csproj b/src/DependencyInjection/DI.Abstractions/src/Microsoft.Extensions.DependencyInjection.Abstractions.csproj index f25f0b81919..fe4826538fb 100644 --- a/src/DependencyInjection/DI.Abstractions/src/Microsoft.Extensions.DependencyInjection.Abstractions.csproj +++ b/src/DependencyInjection/DI.Abstractions/src/Microsoft.Extensions.DependencyInjection.Abstractions.csproj @@ -8,8 +8,13 @@ Microsoft.Extensions.DependencyInjection.IServiceCollection true dependencyinjection;di $(DefineConstants);ActivatorUtilities_In_DependencyInjection + true + + + + diff --git a/src/DependencyInjection/DI.Abstractions/src/Properties/AssemblyInfo.cs b/src/DependencyInjection/DI.Abstractions/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 7586e5bfdad..00000000000 --- a/src/DependencyInjection/DI.Abstractions/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.DependencyInjection.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/DependencyInjection/DI.Specification.Tests/Directory.Build.props b/src/DependencyInjection/DI.Specification.Tests/Directory.Build.props index f25c1d90ce8..6acc2b26b36 100644 --- a/src/DependencyInjection/DI.Specification.Tests/Directory.Build.props +++ b/src/DependencyInjection/DI.Specification.Tests/Directory.Build.props @@ -3,5 +3,7 @@ true + false + false diff --git a/src/DependencyInjection/DI.Specification.Tests/src/ActivatorUtilitiesTests.cs b/src/DependencyInjection/DI.Specification.Tests/src/ActivatorUtilitiesTests.cs index a9798e05fc1..8ee67cbbc55 100644 --- a/src/DependencyInjection/DI.Specification.Tests/src/ActivatorUtilitiesTests.cs +++ b/src/DependencyInjection/DI.Specification.Tests/src/ActivatorUtilitiesTests.cs @@ -111,9 +111,9 @@ public void TypeActivatorWorksWithCtorWithOptionalArgs_WithStructDefaults(Create // Assert Assert.NotNull(anotherClass); Assert.Equal(ConsoleColor.DarkGreen, anotherClass.Color); - Assert.Equal(null, anotherClass.ColorNull); + Assert.Null(anotherClass.ColorNull); Assert.Equal(12, anotherClass.Integer); - Assert.Equal(null, anotherClass.IntegerNull); + Assert.Null(anotherClass.IntegerNull); } [Theory] @@ -248,7 +248,7 @@ public void TypeActivatorUsesMarkedConstructor(CreateInstanceFunc createFunc) public void TypeActivatorThrowsOnMultipleMarkedCtors(CreateInstanceFunc createFunc) { // Act - var exception = Assert.Throws(() => CreateInstance(createFunc, null, "hello")); + var exception = Assert.Throws(() => CreateInstance(createFunc, null, "hello")); // Assert Assert.Equal("Multiple constructors were marked with ActivatorUtilitiesConstructorAttribute.", exception.Message); @@ -259,7 +259,7 @@ public void TypeActivatorThrowsOnMultipleMarkedCtors(CreateInstanceFunc createFu public void TypeActivatorThrowsWhenMarkedCtorDoesntAcceptArguments(CreateInstanceFunc createFunc) { // Act - var exception = Assert.Throws(() => CreateInstance(createFunc, null, 0, "hello")); + var exception = Assert.Throws(() => CreateInstance(createFunc, null, 0, "hello")); // Assert Assert.Equal("Constructor marked with ActivatorUtilitiesConstructorAttribute does not accept all given argument types.", exception.Message); diff --git a/src/DependencyInjection/DI.Specification.Tests/src/Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj b/src/DependencyInjection/DI.Specification.Tests/src/Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj index 2a39e8a61a6..0731f2e828e 100644 --- a/src/DependencyInjection/DI.Specification.Tests/src/Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj +++ b/src/DependencyInjection/DI.Specification.Tests/src/Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj @@ -11,7 +11,10 @@ https://github.com/dotnet/corefx/issues/12338 & https://github.com/dotnet/corefx/issues/11797 --> false + false false + + true @@ -22,5 +25,4 @@ - diff --git a/src/DependencyInjection/DI/src/Microsoft.Extensions.DependencyInjection.csproj b/src/DependencyInjection/DI/src/Microsoft.Extensions.DependencyInjection.csproj index 394dc76e0d5..1f3566bd15a 100644 --- a/src/DependencyInjection/DI/src/Microsoft.Extensions.DependencyInjection.csproj +++ b/src/DependencyInjection/DI/src/Microsoft.Extensions.DependencyInjection.csproj @@ -5,6 +5,7 @@ netcoreapp3.0;net461;netstandard2.0 true dependencyinjection;di + true True $(DefineConstants);IL_EMIT @@ -15,6 +16,11 @@ $(DefineConstants);SAVE_ASSEMBLIES + + + + + diff --git a/src/DependencyInjection/DI/src/Properties/AssemblyInfo.cs b/src/DependencyInjection/DI/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 4afefbd651e..00000000000 --- a/src/DependencyInjection/DI/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.DependencyInjection.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] -[assembly: InternalsVisibleTo("Microsoft.Extensions.DependencyInjection.Performance, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/DiagnosticAdapter/src/Microsoft.Extensions.DiagnosticAdapter.csproj b/src/DiagnosticAdapter/src/Microsoft.Extensions.DiagnosticAdapter.csproj index 7f165d5b865..43911084cea 100644 --- a/src/DiagnosticAdapter/src/Microsoft.Extensions.DiagnosticAdapter.csproj +++ b/src/DiagnosticAdapter/src/Microsoft.Extensions.DiagnosticAdapter.csproj @@ -6,8 +6,14 @@ $(NoWarn);CS1591 true diagnosticadapter;diagnosticlistener;diagnostics + true + + + + + diff --git a/src/DiagnosticAdapter/src/Properties/AssemblyInfo.cs b/src/DiagnosticAdapter/src/Properties/AssemblyInfo.cs deleted file mode 100644 index eb7a8d8a9a9..00000000000 --- a/src/DiagnosticAdapter/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.DiagnosticAdapter.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] diff --git a/src/FileProviders/Abstractions/src/Microsoft.Extensions.FileProviders.Abstractions.csproj b/src/FileProviders/Abstractions/src/Microsoft.Extensions.FileProviders.Abstractions.csproj index 1ba11387eb4..0d2537f5d02 100644 --- a/src/FileProviders/Abstractions/src/Microsoft.Extensions.FileProviders.Abstractions.csproj +++ b/src/FileProviders/Abstractions/src/Microsoft.Extensions.FileProviders.Abstractions.csproj @@ -8,6 +8,7 @@ Microsoft.Extensions.FileProviders.IDirectoryContents Microsoft.Extensions.FileProviders.IFileInfo Microsoft.Extensions.FileProviders.IFileProvider netstandard2.0 + true diff --git a/src/FileProviders/Composite/src/Microsoft.Extensions.FileProviders.Composite.csproj b/src/FileProviders/Composite/src/Microsoft.Extensions.FileProviders.Composite.csproj index c62b87af880..b96e7951271 100644 --- a/src/FileProviders/Composite/src/Microsoft.Extensions.FileProviders.Composite.csproj +++ b/src/FileProviders/Composite/src/Microsoft.Extensions.FileProviders.Composite.csproj @@ -4,6 +4,7 @@ Microsoft.Extensions.FileProviders Composite file and directory providers for Microsoft.Extensions.FileProviders. netstandard2.0 + true diff --git a/src/FileProviders/Composite/test/Microsoft.Extensions.FileProviders.Composite.Tests.csproj b/src/FileProviders/Composite/test/Microsoft.Extensions.FileProviders.Composite.Tests.csproj index 73db507fe71..58643969948 100644 --- a/src/FileProviders/Composite/test/Microsoft.Extensions.FileProviders.Composite.Tests.csproj +++ b/src/FileProviders/Composite/test/Microsoft.Extensions.FileProviders.Composite.Tests.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/FileProviders/Directory.Build.props b/src/FileProviders/Directory.Build.props index bf4410dcb77..709c47ddbd7 100644 --- a/src/FileProviders/Directory.Build.props +++ b/src/FileProviders/Directory.Build.props @@ -2,7 +2,7 @@ - true + true files;filesystem diff --git a/src/FileProviders/Embedded/src/Microsoft.Extensions.FileProviders.Embedded.csproj b/src/FileProviders/Embedded/src/Microsoft.Extensions.FileProviders.Embedded.csproj index e8dd5d85dd0..90cb2e4cc33 100644 --- a/src/FileProviders/Embedded/src/Microsoft.Extensions.FileProviders.Embedded.csproj +++ b/src/FileProviders/Embedded/src/Microsoft.Extensions.FileProviders.Embedded.csproj @@ -5,8 +5,13 @@ File provider for files in embedded resources for Microsoft.Extensions.FileProviders. netstandard2.0 $(MSBuildProjectName).nuspec + true + + + + @@ -18,7 +23,6 @@ - id=$(PackageId); @@ -40,10 +44,9 @@ OutputDocumentation=@(DocumentationProjectOutputGroupOutput); - TaskAssemblyNetStandard=..\..\Manifest.MSBuildTask\src\bin\$(Configuration)\netstandard2.0\$(AssemblyName).Manifest.Task.dll; - TaskSymbolNetStandard=..\..\Manifest.MSBuildTask\src\bin\$(Configuration)\netstandard2.0\$(AssemblyName).Manifest.Task.pdb; + TaskAssemblyNetStandard=$(ArtifactsDir)bin\$(AssemblyName).Manifest.Task\$(Configuration)\netstandard2.0\$(AssemblyName).Manifest.Task.dll; + TaskSymbolNetStandard=$(ArtifactsDir)bin\$(AssemblyName).Manifest.Task\$(Configuration)\netstandard2.0\$(AssemblyName).Manifest.Task.pdb; - diff --git a/src/FileProviders/Embedded/src/Properties/AssemblyInfo.cs b/src/FileProviders/Embedded/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 610a7fa706f..00000000000 --- a/src/FileProviders/Embedded/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,4 +0,0 @@ - -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.FileProviders.Embedded.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] \ No newline at end of file diff --git a/src/FileProviders/Manifest.MSBuildTask/test/Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Test.csproj b/src/FileProviders/Manifest.MSBuildTask/test/Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Tests.csproj similarity index 100% rename from src/FileProviders/Manifest.MSBuildTask/test/Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Test.csproj rename to src/FileProviders/Manifest.MSBuildTask/test/Microsoft.Extensions.FileProviders.Embedded.Manifest.Task.Tests.csproj diff --git a/src/FileProviders/Physical/src/Microsoft.Extensions.FileProviders.Physical.csproj b/src/FileProviders/Physical/src/Microsoft.Extensions.FileProviders.Physical.csproj index be7270c25e4..3327ca9999b 100644 --- a/src/FileProviders/Physical/src/Microsoft.Extensions.FileProviders.Physical.csproj +++ b/src/FileProviders/Physical/src/Microsoft.Extensions.FileProviders.Physical.csproj @@ -5,8 +5,14 @@ File provider for physical files for Microsoft.Extensions.FileProviders. netstandard2.0 true + true + + + + + diff --git a/src/FileProviders/Physical/src/Properties/AssemblyInfo.cs b/src/FileProviders/Physical/src/Properties/AssemblyInfo.cs deleted file mode 100644 index ef640f1a711..00000000000 --- a/src/FileProviders/Physical/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.FileProviders.Physical.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] \ No newline at end of file diff --git a/src/FileSystemGlobbing/src/Microsoft.Extensions.FileSystemGlobbing.csproj b/src/FileSystemGlobbing/src/Microsoft.Extensions.FileSystemGlobbing.csproj index fb190152000..ef0b47af0b2 100644 --- a/src/FileSystemGlobbing/src/Microsoft.Extensions.FileSystemGlobbing.csproj +++ b/src/FileSystemGlobbing/src/Microsoft.Extensions.FileSystemGlobbing.csproj @@ -8,8 +8,13 @@ $(NoWarn);CS1591 files;filesystem;glob;globbing true + true + + + + diff --git a/src/FileSystemGlobbing/src/Properties/AssemblyInfo.cs b/src/FileSystemGlobbing/src/Properties/AssemblyInfo.cs deleted file mode 100644 index b1a0714e4f7..00000000000 --- a/src/FileSystemGlobbing/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.FileSystemGlobbing.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/HealthChecks/Abstractions/src/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.csproj b/src/HealthChecks/Abstractions/src/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.csproj index b95d66f7b38..69298be027b 100644 --- a/src/HealthChecks/Abstractions/src/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.csproj +++ b/src/HealthChecks/Abstractions/src/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.csproj @@ -11,6 +11,7 @@ Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck $(NoWarn);CS1591 true diagnostics;healthchecks + true diff --git a/src/HealthChecks/HealthChecks/src/Microsoft.Extensions.Diagnostics.HealthChecks.csproj b/src/HealthChecks/HealthChecks/src/Microsoft.Extensions.Diagnostics.HealthChecks.csproj index d0b1c97ef05..b49f194d0c0 100644 --- a/src/HealthChecks/HealthChecks/src/Microsoft.Extensions.Diagnostics.HealthChecks.csproj +++ b/src/HealthChecks/HealthChecks/src/Microsoft.Extensions.Diagnostics.HealthChecks.csproj @@ -10,8 +10,13 @@ Microsoft.Extensions.Diagnostics.HealthChecks.IHealthChecksBuilder $(NoWarn);CS1591 true diagnostics;healthchecks + true + + + + diff --git a/src/HealthChecks/HealthChecks/src/Properties/AssemblyInfo.cs b/src/HealthChecks/HealthChecks/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 13e969bfad2..00000000000 --- a/src/HealthChecks/HealthChecks/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Diagnostics.HealthChecks.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] \ No newline at end of file diff --git a/src/Hosting/Abstractions/src/Microsoft.Extensions.Hosting.Abstractions.csproj b/src/Hosting/Abstractions/src/Microsoft.Extensions.Hosting.Abstractions.csproj index 746fbaf96d7..e4bfd8802d8 100644 --- a/src/Hosting/Abstractions/src/Microsoft.Extensions.Hosting.Abstractions.csproj +++ b/src/Hosting/Abstractions/src/Microsoft.Extensions.Hosting.Abstractions.csproj @@ -8,6 +8,7 @@ hosting false Microsoft.Extensions.Hosting + true @@ -16,5 +17,5 @@ - + diff --git a/src/Hosting/Hosting/src/Microsoft.Extensions.Hosting.csproj b/src/Hosting/Hosting/src/Microsoft.Extensions.Hosting.csproj index 1e7bd1e6b1d..1e258ee5bb3 100644 --- a/src/Hosting/Hosting/src/Microsoft.Extensions.Hosting.csproj +++ b/src/Hosting/Hosting/src/Microsoft.Extensions.Hosting.csproj @@ -7,6 +7,7 @@ true hosting false + true diff --git a/src/Hosting/Hosting/test/HostBuilderTests.cs b/src/Hosting/Hosting/test/HostBuilderTests.cs index 144fb0ad959..44b2fd77336 100644 --- a/src/Hosting/Hosting/test/HostBuilderTests.cs +++ b/src/Hosting/Hosting/test/HostBuilderTests.cs @@ -119,8 +119,7 @@ public void CanConfigureAppConfigurationAndRetrieveFromDI() public void CanConfigureAppConfigurationFromFile() { // Needs to look in the project directory like VS would - var projectDir = Path.Combine(TestPathUtilities.GetSolutionRootDirectory("Hosting"), - "Hosting/test"); + var projectDir = Path.Combine(TestPathUtilities.GetRepoRootDirectory(), "src", "Hosting", "Hosting", "test"); var hostBuilder = new HostBuilder() .UseContentRoot(projectDir) .ConfigureAppConfiguration((context, configBuilder) => diff --git a/src/Shared/src/BenchmarkRunner/Directory.Build.props b/src/Hosting/samples/Directory.Build.props similarity index 73% rename from src/Shared/src/BenchmarkRunner/Directory.Build.props rename to src/Hosting/samples/Directory.Build.props index d2f65e8d3dc..ec95ac0ef69 100644 --- a/src/Shared/src/BenchmarkRunner/Directory.Build.props +++ b/src/Hosting/samples/Directory.Build.props @@ -1,8 +1,7 @@ - - Microsoft.AspNetCore.BenchmarkRunner.Sources + false diff --git a/src/HttpClientFactory/Http/src/Microsoft.Extensions.Http.csproj b/src/HttpClientFactory/Http/src/Microsoft.Extensions.Http.csproj index fc98b928d95..acaaa8d8123 100644 --- a/src/HttpClientFactory/Http/src/Microsoft.Extensions.Http.csproj +++ b/src/HttpClientFactory/Http/src/Microsoft.Extensions.Http.csproj @@ -10,8 +10,14 @@ $(NoWarn);CS1591 true aspnetcore;httpclient + true + + + + + diff --git a/src/HttpClientFactory/Http/src/Properties/AssemblyInfo.cs b/src/HttpClientFactory/Http/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 68708b3935b..00000000000 --- a/src/HttpClientFactory/Http/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Http.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] diff --git a/src/HttpClientFactory/Polly/src/Microsoft.Extensions.Http.Polly.csproj b/src/HttpClientFactory/Polly/src/Microsoft.Extensions.Http.Polly.csproj index 4813a045d99..59803a9cf10 100644 --- a/src/HttpClientFactory/Polly/src/Microsoft.Extensions.Http.Polly.csproj +++ b/src/HttpClientFactory/Polly/src/Microsoft.Extensions.Http.Polly.csproj @@ -11,8 +11,13 @@ Microsoft.Extensions.Http + true + + + + diff --git a/src/HttpClientFactory/Polly/src/Properties/AssemblyInfo.cs b/src/HttpClientFactory/Polly/src/Properties/AssemblyInfo.cs index e4bc5810b65..d77af5dc957 100644 --- a/src/HttpClientFactory/Polly/src/Properties/AssemblyInfo.cs +++ b/src/HttpClientFactory/Polly/src/Properties/AssemblyInfo.cs @@ -1,7 +1,6 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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.Runtime.CompilerServices; -[assembly: InternalsVisibleTo("Microsoft.Extensions.Http.Polly.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] + [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] diff --git a/src/HttpClientFactory/Polly/test/Microsoft.Extensions.Http.Polly.Tests.csproj b/src/HttpClientFactory/Polly/test/Microsoft.Extensions.Http.Polly.Tests.csproj index ded0da60384..cb8e41cf039 100644 --- a/src/HttpClientFactory/Polly/test/Microsoft.Extensions.Http.Polly.Tests.csproj +++ b/src/HttpClientFactory/Polly/test/Microsoft.Extensions.Http.Polly.Tests.csproj @@ -1,7 +1,7 @@  - netcoreapp3.0;net472 + $(StandardTestTfms) diff --git a/src/JSInterop/Microsoft.JSInterop/src/Microsoft.JSInterop.csproj b/src/JSInterop/Microsoft.JSInterop/src/Microsoft.JSInterop.csproj index bdfea26ad50..d91e8c2524e 100644 --- a/src/JSInterop/Microsoft.JSInterop/src/Microsoft.JSInterop.csproj +++ b/src/JSInterop/Microsoft.JSInterop/src/Microsoft.JSInterop.csproj @@ -7,4 +7,8 @@ true + + + + diff --git a/src/JSInterop/Microsoft.JSInterop/src/Properties/AssemblyInfo.cs b/src/JSInterop/Microsoft.JSInterop/src/Properties/AssemblyInfo.cs deleted file mode 100644 index d65c89dc7f1..00000000000 --- a/src/JSInterop/Microsoft.JSInterop/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.JSInterop.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/JSInterop/Microsoft.JSInterop/test/DotNetDispatcherTest.cs b/src/JSInterop/Microsoft.JSInterop/test/DotNetDispatcherTest.cs index eec537f987d..93ef9a24985 100644 --- a/src/JSInterop/Microsoft.JSInterop/test/DotNetDispatcherTest.cs +++ b/src/JSInterop/Microsoft.JSInterop/test/DotNetDispatcherTest.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using Xunit; -namespace Microsoft.JSInterop.Test +namespace Microsoft.JSInterop.Tests { public class DotNetDispatcherTest { @@ -73,7 +73,7 @@ public void CannotInvokeUnsuitableMethods(string methodIdentifier) Assert.Equal($"The assembly '{thisAssemblyName}' does not contain a public method with [JSInvokableAttribute(\"{methodIdentifier}\")].", ex.Message); } - [Fact] + [Fact(Skip = "https://github.com/aspnet/AspNetCore-Internal/issues/1733")] public Task CanInvokeStaticVoidMethod() => WithJSRuntime(jsRuntime => { // Arrange/Act @@ -109,7 +109,7 @@ public void CannotInvokeUnsuitableMethods(string methodIdentifier) Assert.Equal(456, result.IntVal); }); - [Fact] + [Fact(Skip = "https://github.com/aspnet/AspNetCore-Internal/issues/1733")] public Task CanInvokeStaticWithParams() => WithJSRuntime(jsRuntime => { // Arrange: Track a .NET object to use as an arg @@ -140,7 +140,7 @@ public void CannotInvokeUnsuitableMethods(string methodIdentifier) Assert.Equal(1299, resultDto2.IntVal); }); - [Fact] + [Fact(Skip = "https://github.com/aspnet/AspNetCore-Internal/issues/1733")] public Task CanInvokeInstanceVoidMethod() => WithJSRuntime(jsRuntime => { // Arrange: Track some instance @@ -155,7 +155,7 @@ public void CannotInvokeUnsuitableMethods(string methodIdentifier) Assert.True(targetInstance.DidInvokeMyInvocableInstanceVoid); }); - [Fact] + [Fact(Skip = "https://github.com/aspnet/AspNetCore-Internal/issues/1733")] public Task CanInvokeBaseInstanceVoidMethod() => WithJSRuntime(jsRuntime => { // Arrange: Track some instance @@ -206,7 +206,7 @@ public void CannotInvokeUnsuitableMethods(string methodIdentifier) Assert.StartsWith("There is no tracked object with id '1'.", ex.Message); }); - [Fact] + [Fact(Skip = "https://github.com/aspnet/AspNetCore-Internal/issues/1733")] public Task CanInvokeInstanceMethodWithParams() => WithJSRuntime(jsRuntime => { // Arrange: Track some instance plus another object we'll pass as a param @@ -242,7 +242,7 @@ public void CannotInvokeWithIncorrectNumberOfParams() Assert.Equal("In call to 'InvocableStaticWithParams', expected 3 parameters but received 4.", ex.Message); } - [Fact] + [Fact(Skip = "https://github.com/aspnet/AspNetCore-Internal/issues/1733")] public Task CanInvokeAsyncMethod() => WithJSRuntime(async jsRuntime => { // Arrange: Track some instance plus another object we'll pass as a param @@ -320,7 +320,8 @@ public class SomePublicType protected static void StaticMethodWithoutAttribute() { } protected static void InstanceMethodWithoutAttribute() { } - [JSInvokable("InvocableStaticVoid")] public static void MyInvocableVoid() + [JSInvokable("InvocableStaticVoid")] + public static void MyInvocableVoid() { DidInvokeMyInvocableStaticVoid = true; } diff --git a/src/JSInterop/Microsoft.JSInterop/test/DotNetObjectRefTest.cs b/src/JSInterop/Microsoft.JSInterop/test/DotNetObjectRefTest.cs index 969dcae79d9..1bdec6d4652 100644 --- a/src/JSInterop/Microsoft.JSInterop/test/DotNetObjectRefTest.cs +++ b/src/JSInterop/Microsoft.JSInterop/test/DotNetObjectRefTest.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using Xunit; -namespace Microsoft.JSInterop.Test +namespace Microsoft.JSInterop.Tests { public class DotNetObjectRefTest { diff --git a/src/JSInterop/Microsoft.JSInterop/test/JSInProcessRuntimeBaseTest.cs b/src/JSInterop/Microsoft.JSInterop/test/JSInProcessRuntimeBaseTest.cs index d2e71f6eb21..36474fe4071 100644 --- a/src/JSInterop/Microsoft.JSInterop/test/JSInProcessRuntimeBaseTest.cs +++ b/src/JSInterop/Microsoft.JSInterop/test/JSInProcessRuntimeBaseTest.cs @@ -6,7 +6,7 @@ using System.Linq; using Xunit; -namespace Microsoft.JSInterop.Test +namespace Microsoft.JSInterop.Tests { public class JSInProcessRuntimeBaseTest { @@ -21,7 +21,7 @@ public void DispatchesSyncCallsAndDeserializesResults() }; // Act - var syncResult = runtime.Invoke("test identifier 1", "arg1", 123, true ); + var syncResult = runtime.Invoke("test identifier 1", "arg1", 123, true); var call = runtime.InvokeCalls.Single(); // Assert diff --git a/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeBaseTest.cs b/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeBaseTest.cs index 9193d6deb8d..ab048e812fe 100644 --- a/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeBaseTest.cs +++ b/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeBaseTest.cs @@ -7,7 +7,7 @@ using System.Linq; using Xunit; -namespace Microsoft.JSInterop.Test +namespace Microsoft.JSInterop.Tests { public class JSRuntimeBaseTest { @@ -18,7 +18,7 @@ public void DispatchesAsyncCallsWithDistinctAsyncHandles() var runtime = new TestJSRuntime(); // Act - runtime.InvokeAsync("test identifier 1", "arg1", 123, true ); + runtime.InvokeAsync("test identifier 1", "arg1", 123, true); runtime.InvokeAsync("test identifier 2", "some other arg"); // Assert diff --git a/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs b/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs index d5fed45ea4f..b8a1c363dc9 100644 --- a/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs +++ b/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using Xunit; -namespace Microsoft.JSInterop.Test +namespace Microsoft.JSInterop.Tests { public class JSRuntimeTest { diff --git a/src/JSInterop/Microsoft.JSInterop/test/JsonUtilTest.cs b/src/JSInterop/Microsoft.JSInterop/test/JsonUtilTest.cs index 1be98b681e1..2b239faab9c 100644 --- a/src/JSInterop/Microsoft.JSInterop/test/JsonUtilTest.cs +++ b/src/JSInterop/Microsoft.JSInterop/test/JsonUtilTest.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using Xunit; -namespace Microsoft.JSInterop.Test +namespace Microsoft.JSInterop.Tests { public class JsonUtilTest { @@ -124,10 +124,10 @@ public void CanSerializeStructToJson() BoolProperty = true, NullableIntProperty = 1 }; - + // Act var result = Json.Serialize(commandResult); - + // Assert Assert.Equal("{\"stringProperty\":\"Test\",\"boolProperty\":true,\"nullableIntProperty\":1}", result); } @@ -222,12 +222,12 @@ public void NonEmptyConstructorThrowsUsefulException() // Act var exception = Assert.Throws(() => { - Json.Deserialize(json); + Json.Deserialize(json); }); // Assert Assert.Equal( - $"Cannot deserialize JSON into type '{type.FullName}' because it does not have a public parameterless constructor.", + $"Cannot deserialize JSON into type '{type.FullName}' because it does not have a public parameterless constructor.", exception.Message); } @@ -277,7 +277,7 @@ public void MemberNameToCamelCase_Invalid(string input) class NonEmptyConstructorPoco { - public NonEmptyConstructorPoco(int parameter) {} + public NonEmptyConstructorPoco(int parameter) { } public int Property { get; set; } } diff --git a/src/JSInterop/Microsoft.JSInterop/test/Microsoft.JSInterop.Test.csproj b/src/JSInterop/Microsoft.JSInterop/test/Microsoft.JSInterop.Test.csproj deleted file mode 100644 index 5e88f44a3a4..00000000000 --- a/src/JSInterop/Microsoft.JSInterop/test/Microsoft.JSInterop.Test.csproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - netcoreapp3.0 - - - - - - - diff --git a/src/JSInterop/Microsoft.JSInterop/test/Microsoft.JSInterop.Tests.csproj b/src/JSInterop/Microsoft.JSInterop/test/Microsoft.JSInterop.Tests.csproj new file mode 100644 index 00000000000..a39b0821806 --- /dev/null +++ b/src/JSInterop/Microsoft.JSInterop/test/Microsoft.JSInterop.Tests.csproj @@ -0,0 +1,15 @@ + + + + netcoreapp3.0 + + + + + + + + + + + diff --git a/src/JSInterop/Microsoft.JSInterop/test/xunit.runner.json b/src/JSInterop/Microsoft.JSInterop/test/xunit.runner.json new file mode 100644 index 00000000000..0f2ad9f7698 --- /dev/null +++ b/src/JSInterop/Microsoft.JSInterop/test/xunit.runner.json @@ -0,0 +1,3 @@ +{ + "shadowCopy": true +} diff --git a/src/Localization/Abstractions/src/Microsoft.Extensions.Localization.Abstractions.csproj b/src/Localization/Abstractions/src/Microsoft.Extensions.Localization.Abstractions.csproj index 8508eb071aa..636072724fc 100644 --- a/src/Localization/Abstractions/src/Microsoft.Extensions.Localization.Abstractions.csproj +++ b/src/Localization/Abstractions/src/Microsoft.Extensions.Localization.Abstractions.csproj @@ -10,6 +10,7 @@ Microsoft.Extensions.Localization.IStringLocalizer<T> $(NoWarn);CS1591 true localization + true diff --git a/src/Localization/Localization/src/Microsoft.Extensions.Localization.csproj b/src/Localization/Localization/src/Microsoft.Extensions.Localization.csproj index 73365a15eb4..8a820ac7b93 100644 --- a/src/Localization/Localization/src/Microsoft.Extensions.Localization.csproj +++ b/src/Localization/Localization/src/Microsoft.Extensions.Localization.csproj @@ -7,6 +7,7 @@ $(NoWarn);CS1591 true localization + true @@ -16,4 +17,8 @@ + + + + diff --git a/src/Localization/Localization/src/Properties/AssemblyInfo.cs b/src/Localization/Localization/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 3e297b801e9..00000000000 --- a/src/Localization/Localization/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Localization.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Logging/Directory.Build.props b/src/Logging/Directory.Build.props index 6b072488ac5..1ab7039405d 100644 --- a/src/Logging/Directory.Build.props +++ b/src/Logging/Directory.Build.props @@ -2,7 +2,7 @@ - true + true logging diff --git a/src/Logging/Logging.Abstractions/src/Microsoft.Extensions.Logging.Abstractions.csproj b/src/Logging/Logging.Abstractions/src/Microsoft.Extensions.Logging.Abstractions.csproj index 5c19dc08a41..b5c83240519 100644 --- a/src/Logging/Logging.Abstractions/src/Microsoft.Extensions.Logging.Abstractions.csproj +++ b/src/Logging/Logging.Abstractions/src/Microsoft.Extensions.Logging.Abstractions.csproj @@ -12,8 +12,13 @@ Microsoft.Extensions.Logging.LoggerMessage Microsoft.Extensions.Logging.Abstractions.NullLogger netstandard2.0 $(NoWarn);CS1591 + true + + + + diff --git a/src/Logging/Logging.Abstractions/src/Properties/AssemblyInfo.cs b/src/Logging/Logging.Abstractions/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 7d5d0d3e039..00000000000 --- a/src/Logging/Logging.Abstractions/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Logging.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Logging/Logging.AzureAppServices/src/Microsoft.Extensions.Logging.AzureAppServices.csproj b/src/Logging/Logging.AzureAppServices/src/Microsoft.Extensions.Logging.AzureAppServices.csproj index d6eb1861227..4eace047d43 100644 --- a/src/Logging/Logging.AzureAppServices/src/Microsoft.Extensions.Logging.AzureAppServices.csproj +++ b/src/Logging/Logging.AzureAppServices/src/Microsoft.Extensions.Logging.AzureAppServices.csproj @@ -4,8 +4,13 @@ Logger implementation to support Azure App Services 'Diagnostics logs' and 'Log stream' features. netstandard2.0 $(NoWarn);CS1591 + true + + + + diff --git a/src/Logging/Logging.AzureAppServices/src/Properties/AssemblyInfo.cs b/src/Logging/Logging.AzureAppServices/src/Properties/AssemblyInfo.cs index 83f3ffe0553..d77af5dc957 100644 --- a/src/Logging/Logging.AzureAppServices/src/Properties/AssemblyInfo.cs +++ b/src/Logging/Logging.AzureAppServices/src/Properties/AssemblyInfo.cs @@ -1,8 +1,6 @@ // 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.Runtime.CompilerServices; -[assembly: InternalsVisibleTo("Microsoft.Extensions.Logging.AzureAppServices.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] diff --git a/src/Logging/Logging.Configuration/src/Microsoft.Extensions.Logging.Configuration.csproj b/src/Logging/Logging.Configuration/src/Microsoft.Extensions.Logging.Configuration.csproj index 626f3130ad2..6027d5b5630 100644 --- a/src/Logging/Logging.Configuration/src/Microsoft.Extensions.Logging.Configuration.csproj +++ b/src/Logging/Logging.Configuration/src/Microsoft.Extensions.Logging.Configuration.csproj @@ -3,6 +3,7 @@ Configuration support for Microsoft.Extensions.Logging. netstandard2.0 + true diff --git a/src/Logging/Logging.Console/src/Microsoft.Extensions.Logging.Console.csproj b/src/Logging/Logging.Console/src/Microsoft.Extensions.Logging.Console.csproj index ddd7d5af55a..4346e4f9bc8 100644 --- a/src/Logging/Logging.Console/src/Microsoft.Extensions.Logging.Console.csproj +++ b/src/Logging/Logging.Console/src/Microsoft.Extensions.Logging.Console.csproj @@ -4,8 +4,13 @@ Console logger provider implementation for Microsoft.Extensions.Logging. netstandard2.0 $(NoWarn);CS1591 + true + + + + diff --git a/src/Logging/Logging.Console/src/Properties/AssemblyInfo.cs b/src/Logging/Logging.Console/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 32e0f3469ae..00000000000 --- a/src/Logging/Logging.Console/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Logging.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Logging/Logging.Debug/src/Microsoft.Extensions.Logging.Debug.csproj b/src/Logging/Logging.Debug/src/Microsoft.Extensions.Logging.Debug.csproj index 993ff6e16cd..1520e7e0228 100644 --- a/src/Logging/Logging.Debug/src/Microsoft.Extensions.Logging.Debug.csproj +++ b/src/Logging/Logging.Debug/src/Microsoft.Extensions.Logging.Debug.csproj @@ -4,8 +4,13 @@ Debug output logger provider implementation for Microsoft.Extensions.Logging. This logger logs messages to a debugger monitor by writing messages with System.Diagnostics.Debug.WriteLine(). netstandard2.0 $(NoWarn);CS1591 + true + + + + diff --git a/src/Logging/Logging.Debug/src/Properties/AssemblyInfo.cs b/src/Logging/Logging.Debug/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 32e0f3469ae..00000000000 --- a/src/Logging/Logging.Debug/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Logging.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Logging/Logging.EventLog/src/Microsoft.Extensions.Logging.EventLog.csproj b/src/Logging/Logging.EventLog/src/Microsoft.Extensions.Logging.EventLog.csproj index d842f524f80..5c49866ceb4 100644 --- a/src/Logging/Logging.EventLog/src/Microsoft.Extensions.Logging.EventLog.csproj +++ b/src/Logging/Logging.EventLog/src/Microsoft.Extensions.Logging.EventLog.csproj @@ -5,8 +5,13 @@ netstandard2.0;net461 $(NoWarn);CS1591 $(PackageTags);eventlog;windowseventlog + true + + + + diff --git a/src/Logging/Logging.EventLog/src/Properties/AssemblyInfo.cs b/src/Logging/Logging.EventLog/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 32e0f3469ae..00000000000 --- a/src/Logging/Logging.EventLog/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,7 +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.Runtime.CompilerServices; - - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Logging.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Logging/Logging.EventSource/src/Microsoft.Extensions.Logging.EventSource.csproj b/src/Logging/Logging.EventSource/src/Microsoft.Extensions.Logging.EventSource.csproj index 0d8b6d00a17..3e160c4d17a 100644 --- a/src/Logging/Logging.EventSource/src/Microsoft.Extensions.Logging.EventSource.csproj +++ b/src/Logging/Logging.EventSource/src/Microsoft.Extensions.Logging.EventSource.csproj @@ -5,6 +5,7 @@ netstandard2.0 $(PackageTags);EventSource;ETW true + true diff --git a/src/Logging/Logging.EventSource/test/AssemblyInfo.cs b/src/Logging/Logging.EventSource/test/AssemblyInfo.cs index e46bc08b81f..0e9cac920bd 100644 --- a/src/Logging/Logging.EventSource/test/AssemblyInfo.cs +++ b/src/Logging/Logging.EventSource/test/AssemblyInfo.cs @@ -7,4 +7,4 @@ // all existing listeners that enabled that EventSource will receive the event. // This makes running EventSourceLogger tests in parallel difficult. We mark this assembly // with CollectionBehavior.CollectionPerAssembly to ensure that all tests in this assembly are executed serially. -[assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly)] \ No newline at end of file +[assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly)] diff --git a/src/Logging/Logging.Testing/src/Microsoft.Extensions.Logging.Testing.csproj b/src/Logging/Logging.Testing/src/Microsoft.Extensions.Logging.Testing.csproj index 22a1db02439..84fbab29666 100644 --- a/src/Logging/Logging.Testing/src/Microsoft.Extensions.Logging.Testing.csproj +++ b/src/Logging/Logging.Testing/src/Microsoft.Extensions.Logging.Testing.csproj @@ -6,8 +6,13 @@ $(NoWarn);CS1591 $(PackageTags);testing false + true + + + + diff --git a/src/Logging/Logging.Testing/src/Properties/AssemblyInfo.cs b/src/Logging/Logging.Testing/src/Properties/AssemblyInfo.cs deleted file mode 100644 index a5cc6c1da7e..00000000000 --- a/src/Logging/Logging.Testing/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Logging.Testing.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Logging/Logging.Testing/src/Xunit/LoggedConditionalFactDiscoverer.cs b/src/Logging/Logging.Testing/src/Xunit/LoggedConditionalFactDiscoverer.cs index ebb9ecf92e8..4ac4c6fe9cb 100644 --- a/src/Logging/Logging.Testing/src/Xunit/LoggedConditionalFactDiscoverer.cs +++ b/src/Logging/Logging.Testing/src/Xunit/LoggedConditionalFactDiscoverer.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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.AspNetCore.Testing.xunit; @@ -20,7 +20,7 @@ protected override IXunitTestCase CreateTestCase(ITestFrameworkDiscoveryOptions { var skipReason = testMethod.EvaluateSkipConditions(); return skipReason != null - ? new SkippedTestCase(skipReason, _diagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), testMethod) + ? new SkippedTestCase(skipReason, _diagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), TestMethodDisplayOptions.None, testMethod) : base.CreateTestCase(discoveryOptions, testMethod, factAttribute); } diff --git a/src/Logging/Logging.Testing/src/Xunit/LoggedConditionalTheoryDiscoverer.cs b/src/Logging/Logging.Testing/src/Xunit/LoggedConditionalTheoryDiscoverer.cs index d239b1147c2..773ef715410 100644 --- a/src/Logging/Logging.Testing/src/Xunit/LoggedConditionalTheoryDiscoverer.cs +++ b/src/Logging/Logging.Testing/src/Xunit/LoggedConditionalTheoryDiscoverer.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -22,7 +22,7 @@ public LoggedConditionalTheoryDiscoverer(IMessageSink diagnosticMessageSink) { var skipReason = testMethod.EvaluateSkipConditions(); return skipReason != null - ? new[] { new SkippedTestCase(skipReason, DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), testMethod) } + ? new[] { new SkippedTestCase(skipReason, DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), TestMethodDisplayOptions.None, testMethod) } : base.CreateTestCasesForTheory(discoveryOptions, testMethod, theoryAttribute); } diff --git a/src/Logging/Logging.Testing/src/Xunit/LoggedFactDiscoverer.cs b/src/Logging/Logging.Testing/src/Xunit/LoggedFactDiscoverer.cs index c52d99c822e..e2268d96cbe 100644 --- a/src/Logging/Logging.Testing/src/Xunit/LoggedFactDiscoverer.cs +++ b/src/Logging/Logging.Testing/src/Xunit/LoggedFactDiscoverer.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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 Xunit.Abstractions; @@ -13,6 +13,6 @@ public LoggedFactDiscoverer(IMessageSink diagnosticMessageSink) : base(diagnosti } protected override IXunitTestCase CreateTestCase(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, IAttributeInfo factAttribute) - => new LoggedTestCase(DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), testMethod); + => new LoggedTestCase(DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), TestMethodDisplayOptions.None, testMethod); } } diff --git a/src/Logging/Logging.Testing/src/Xunit/LoggedTestCase.cs b/src/Logging/Logging.Testing/src/Xunit/LoggedTestCase.cs index b8d3684c18c..c43180df89c 100644 --- a/src/Logging/Logging.Testing/src/Xunit/LoggedTestCase.cs +++ b/src/Logging/Logging.Testing/src/Xunit/LoggedTestCase.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -19,9 +19,10 @@ public LoggedTestCase() : base() public LoggedTestCase( IMessageSink diagnosticMessageSink, TestMethodDisplay defaultMethodDisplay, + TestMethodDisplayOptions defaultMethodDisplayOptions, ITestMethod testMethod, object[] testMethodArguments = null) - : base(diagnosticMessageSink, defaultMethodDisplay, testMethod, testMethodArguments) + : base(diagnosticMessageSink, defaultMethodDisplay, defaultMethodDisplayOptions, testMethod, testMethodArguments) { } diff --git a/src/Logging/Logging.Testing/src/Xunit/LoggedTestFrameworkDiscoverer.cs b/src/Logging/Logging.Testing/src/Xunit/LoggedTestFrameworkDiscoverer.cs index 4b1668ce953..9905404ed9b 100644 --- a/src/Logging/Logging.Testing/src/Xunit/LoggedTestFrameworkDiscoverer.cs +++ b/src/Logging/Logging.Testing/src/Xunit/LoggedTestFrameworkDiscoverer.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -43,7 +43,7 @@ public class LoggedTestFrameworkDiscoverer : XunitTestFrameworkDiscoverer if (factAttributes.Count() > 1) { var message = $"Test method '{testMethod.TestClass.Class.Name}.{testMethod.Method.Name}' has multiple [Fact]-derived attributes"; - var testCase = new ExecutionErrorTestCase(DiagnosticMessageSink, TestMethodDisplay.ClassAndMethod, testMethod, message); + var testCase = new ExecutionErrorTestCase(DiagnosticMessageSink, TestMethodDisplay.ClassAndMethod, TestMethodDisplayOptions.None, testMethod, message); return ReportDiscoveredTestCase(testCase, includeSourceInformation, messageBus); } @@ -77,4 +77,4 @@ public class LoggedTestFrameworkDiscoverer : XunitTestFrameworkDiscoverer } } } -} \ No newline at end of file +} diff --git a/src/Logging/Logging.Testing/src/Xunit/LoggedTheoryDiscoverer.cs b/src/Logging/Logging.Testing/src/Xunit/LoggedTheoryDiscoverer.cs index 535099c6909..9d5402a09b5 100644 --- a/src/Logging/Logging.Testing/src/Xunit/LoggedTheoryDiscoverer.cs +++ b/src/Logging/Logging.Testing/src/Xunit/LoggedTheoryDiscoverer.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -18,12 +18,12 @@ public LoggedTheoryDiscoverer(IMessageSink diagnosticMessageSink) : base(diagnos ITestMethod testMethod, IAttributeInfo theoryAttribute, object[] dataRow) - => new[] { new LoggedTestCase(DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), testMethod, dataRow) }; + => new[] { new LoggedTestCase(DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), TestMethodDisplayOptions.None, testMethod, dataRow) }; protected override IEnumerable CreateTestCasesForTheory( ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, IAttributeInfo theoryAttribute) - => new[] { new LoggedTheoryTestCase(DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), testMethod) }; + => new[] { new LoggedTheoryTestCase(DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), TestMethodDisplayOptions.None, testMethod) }; } } diff --git a/src/Logging/Logging.Testing/src/Xunit/LoggedTheoryTestCase.cs b/src/Logging/Logging.Testing/src/Xunit/LoggedTheoryTestCase.cs index db78f093c2d..fa3e3a050d8 100644 --- a/src/Logging/Logging.Testing/src/Xunit/LoggedTheoryTestCase.cs +++ b/src/Logging/Logging.Testing/src/Xunit/LoggedTheoryTestCase.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -19,8 +19,9 @@ public LoggedTheoryTestCase() : base() public LoggedTheoryTestCase( IMessageSink diagnosticMessageSink, TestMethodDisplay defaultMethodDisplay, + TestMethodDisplayOptions defaultMethodDisplayOptions, ITestMethod testMethod) - : base(diagnosticMessageSink, defaultMethodDisplay, testMethod) + : base(diagnosticMessageSink, defaultMethodDisplay, defaultMethodDisplayOptions, testMethod) { } diff --git a/src/Logging/Logging.Testing/test/Properties/AssemlyInfo.cs b/src/Logging/Logging.Testing/test/Properties/AssemblyInfo.cs similarity index 67% rename from src/Logging/Logging.Testing/test/Properties/AssemlyInfo.cs rename to src/Logging/Logging.Testing/test/Properties/AssemblyInfo.cs index 63c2b71d23d..82616e2737e 100644 --- a/src/Logging/Logging.Testing/test/Properties/AssemlyInfo.cs +++ b/src/Logging/Logging.Testing/test/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Testing; [assembly: LogLevel(LogLevel.Trace)] diff --git a/src/Logging/Logging.TraceSource/src/Microsoft.Extensions.Logging.TraceSource.csproj b/src/Logging/Logging.TraceSource/src/Microsoft.Extensions.Logging.TraceSource.csproj index 7f8e7416c40..3c7fd657f7a 100644 --- a/src/Logging/Logging.TraceSource/src/Microsoft.Extensions.Logging.TraceSource.csproj +++ b/src/Logging/Logging.TraceSource/src/Microsoft.Extensions.Logging.TraceSource.csproj @@ -6,6 +6,7 @@ $(NoWarn);CS1591 true logging;tracesource + true diff --git a/src/Logging/Logging/src/Microsoft.Extensions.Logging.csproj b/src/Logging/Logging/src/Microsoft.Extensions.Logging.csproj index 2c0555af1af..ecd86224d01 100644 --- a/src/Logging/Logging/src/Microsoft.Extensions.Logging.csproj +++ b/src/Logging/Logging/src/Microsoft.Extensions.Logging.csproj @@ -4,8 +4,13 @@ Logging infrastructure default implementation for Microsoft.Extensions.Logging. netstandard2.0 $(NoWarn);CS1591 + true + + + + diff --git a/src/Logging/Logging/src/Properties/AssemlyInfo.cs b/src/Logging/Logging/src/Properties/AssemlyInfo.cs deleted file mode 100644 index a603dd0845d..00000000000 --- a/src/Logging/Logging/src/Properties/AssemlyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Logging.Configuration, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] \ No newline at end of file diff --git a/src/ObjectPool/perf/Properties/AssemblyInfo.cs b/src/ObjectPool/perf/Properties/AssemblyInfo.cs index 409fcf814af..facbd7e3925 100644 --- a/src/ObjectPool/perf/Properties/AssemblyInfo.cs +++ b/src/ObjectPool/perf/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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. [assembly: BenchmarkDotNet.Attributes.AspNetCoreBenchmark] diff --git a/src/ObjectPool/src/Microsoft.Extensions.ObjectPool.csproj b/src/ObjectPool/src/Microsoft.Extensions.ObjectPool.csproj index cb42c5615a5..646d18a8b7f 100644 --- a/src/ObjectPool/src/Microsoft.Extensions.ObjectPool.csproj +++ b/src/ObjectPool/src/Microsoft.Extensions.ObjectPool.csproj @@ -6,6 +6,7 @@ $(NoWarn);CS1591 true pooling + true diff --git a/src/Options/ConfigurationExtensions/src/Microsoft.Extensions.Options.ConfigurationExtensions.csproj b/src/Options/ConfigurationExtensions/src/Microsoft.Extensions.Options.ConfigurationExtensions.csproj index 60b92a75b46..67be2787d16 100644 --- a/src/Options/ConfigurationExtensions/src/Microsoft.Extensions.Options.ConfigurationExtensions.csproj +++ b/src/Options/ConfigurationExtensions/src/Microsoft.Extensions.Options.ConfigurationExtensions.csproj @@ -5,6 +5,7 @@ netstandard2.0 true aspnetcore;configuration;options + true diff --git a/src/Options/DataAnnotations/src/Microsoft.Extensions.Options.DataAnnotations.csproj b/src/Options/DataAnnotations/src/Microsoft.Extensions.Options.DataAnnotations.csproj index bcb7ac68b91..29467cc0d98 100644 --- a/src/Options/DataAnnotations/src/Microsoft.Extensions.Options.DataAnnotations.csproj +++ b/src/Options/DataAnnotations/src/Microsoft.Extensions.Options.DataAnnotations.csproj @@ -5,6 +5,7 @@ netstandard2.0 true aspnetcore;validation;options + true diff --git a/src/Options/Options/src/Microsoft.Extensions.Options.csproj b/src/Options/Options/src/Microsoft.Extensions.Options.csproj index d1f4bcd4207..6b0ada3d770 100644 --- a/src/Options/Options/src/Microsoft.Extensions.Options.csproj +++ b/src/Options/Options/src/Microsoft.Extensions.Options.csproj @@ -5,8 +5,13 @@ netstandard2.0 true aspnetcore;options + true + + + + diff --git a/src/Options/Options/src/Properties/AssemblyInfo.cs b/src/Options/Options/src/Properties/AssemblyInfo.cs deleted file mode 100644 index a25556153c1..00000000000 --- a/src/Options/Options/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.Extensions.Options.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/Primitives/perf/Properties/AssemblyInfo.cs b/src/Primitives/perf/Properties/AssemblyInfo.cs index 409fcf814af..facbd7e3925 100644 --- a/src/Primitives/perf/Properties/AssemblyInfo.cs +++ b/src/Primitives/perf/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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. [assembly: BenchmarkDotNet.Attributes.AspNetCoreBenchmark] diff --git a/src/Primitives/src/Microsoft.Extensions.Primitives.csproj b/src/Primitives/src/Microsoft.Extensions.Primitives.csproj index ca59eda0241..e8f17a9091d 100644 --- a/src/Primitives/src/Microsoft.Extensions.Primitives.csproj +++ b/src/Primitives/src/Microsoft.Extensions.Primitives.csproj @@ -10,6 +10,7 @@ Microsoft.Extensions.Primitives.StringSegment true true primitives + true diff --git a/src/Shared/src/ActivatorUtilities/Microsoft.Extensions.ActivatorUtilities.Sources.csproj b/src/Shared/src/ActivatorUtilities/Microsoft.Extensions.ActivatorUtilities.Sources.csproj new file mode 100644 index 00000000000..85545d30c81 --- /dev/null +++ b/src/Shared/src/ActivatorUtilities/Microsoft.Extensions.ActivatorUtilities.Sources.csproj @@ -0,0 +1,14 @@ + + + + + + + true + $(ContentTargetFolders)\cs\netstandard1.0\ + + + + + + diff --git a/src/Shared/src/ActivatorUtilities/sharedsources.props b/src/Shared/src/ActivatorUtilities/sharedsources.props index b35fe34b10f..f7546775319 100644 --- a/src/Shared/src/ActivatorUtilities/sharedsources.props +++ b/src/Shared/src/ActivatorUtilities/sharedsources.props @@ -1,4 +1,8 @@ + + false + + true diff --git a/src/Shared/src/BenchmarkRunner/Microsoft.AspNetCore.BenchmarkRunner.Sources.csproj b/src/Shared/src/BenchmarkRunner/Microsoft.AspNetCore.BenchmarkRunner.Sources.csproj new file mode 100644 index 00000000000..dec7fff6e5f --- /dev/null +++ b/src/Shared/src/BenchmarkRunner/Microsoft.AspNetCore.BenchmarkRunner.Sources.csproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.csproj b/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.csproj new file mode 100644 index 00000000000..dec7fff6e5f --- /dev/null +++ b/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.csproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.projitems b/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.projitems index 5da4522c6af..72e5498e44b 100644 --- a/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.projitems +++ b/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.projitems @@ -1,4 +1,4 @@ - + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) diff --git a/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.shproj b/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.shproj deleted file mode 100644 index c728fe1012c..00000000000 --- a/src/Shared/src/CommandLineUtils/Microsoft.Extensions.CommandLineUtils.Sources.shproj +++ /dev/null @@ -1,13 +0,0 @@ - - - - 00947d4a-c20e-46e3-90c3-6cd6bc87ee72 - 14.0 - - - - - - - - diff --git a/src/Shared/src/Directory.Build.props b/src/Shared/src/Directory.Build.props index b98d9229f1b..264f2f4cfac 100644 --- a/src/Shared/src/Directory.Build.props +++ b/src/Shared/src/Directory.Build.props @@ -1,9 +1,31 @@ - + + netstandard1.0 + true + false + true + false + false + false false - Microsoft.Extensions.$(ProjectDirName).Sources + contentFiles + true + $(DefaultExcludeItems);$(BaseOutputPath);$(BaseIntermediateOutputPath); + $(NoWarn);NU5105;CS8021 + + + + true + $(ContentTargetFolders)\cs\netstandard1.0\shared\ + + + true + $(ContentTargetFolders)\any\any\shared\ + + + diff --git a/src/Shared/src/HashCodeCombiner/Microsoft.Extensions.HashCodeCombiner.Sources.csproj b/src/Shared/src/HashCodeCombiner/Microsoft.Extensions.HashCodeCombiner.Sources.csproj new file mode 100644 index 00000000000..dec7fff6e5f --- /dev/null +++ b/src/Shared/src/HashCodeCombiner/Microsoft.Extensions.HashCodeCombiner.Sources.csproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/Shared/src/NonCapturingTimer/Microsoft.Extensions.NonCapturingTimer.Sources.csproj b/src/Shared/src/NonCapturingTimer/Microsoft.Extensions.NonCapturingTimer.Sources.csproj new file mode 100644 index 00000000000..dec7fff6e5f --- /dev/null +++ b/src/Shared/src/NonCapturingTimer/Microsoft.Extensions.NonCapturingTimer.Sources.csproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/Shared/src/ParameterDefaultValue/Microsoft.Extensions.ParameterDefaultValue.Sources.csproj b/src/Shared/src/ParameterDefaultValue/Microsoft.Extensions.ParameterDefaultValue.Sources.csproj new file mode 100644 index 00000000000..dec7fff6e5f --- /dev/null +++ b/src/Shared/src/ParameterDefaultValue/Microsoft.Extensions.ParameterDefaultValue.Sources.csproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/Shared/src/TypeNameHelper/Microsoft.Extensions.TypeNameHelper.Sources.csproj b/src/Shared/src/TypeNameHelper/Microsoft.Extensions.TypeNameHelper.Sources.csproj new file mode 100644 index 00000000000..dec7fff6e5f --- /dev/null +++ b/src/Shared/src/TypeNameHelper/Microsoft.Extensions.TypeNameHelper.Sources.csproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/Shared/src/ValueStopwatch/Microsoft.Extensions.ValueStopWatch.Sources.csproj b/src/Shared/src/ValueStopwatch/Microsoft.Extensions.ValueStopWatch.Sources.csproj new file mode 100644 index 00000000000..dec7fff6e5f --- /dev/null +++ b/src/Shared/src/ValueStopwatch/Microsoft.Extensions.ValueStopWatch.Sources.csproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/TestingUtils/Internal.AspNetCore.Analyzers/src/Internal.AspNetCore.Analyzers.csproj b/src/TestingUtils/Internal.AspNetCore.Analyzers/src/Internal.AspNetCore.Analyzers.csproj index 1814c4c69fd..09a66966e07 100644 --- a/src/TestingUtils/Internal.AspNetCore.Analyzers/src/Internal.AspNetCore.Analyzers.csproj +++ b/src/TestingUtils/Internal.AspNetCore.Analyzers/src/Internal.AspNetCore.Analyzers.csproj @@ -7,6 +7,7 @@ $(NoWarn);CS1591 false analyzers/dotnet/cs/ + true diff --git a/src/TestingUtils/Microsoft.AspNetCore.Analyzer.Testing/src/Microsoft.AspNetCore.Analyzer.Testing.csproj b/src/TestingUtils/Microsoft.AspNetCore.Analyzer.Testing/src/Microsoft.AspNetCore.Analyzer.Testing.csproj index 15259c0539d..988ca150cbc 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Analyzer.Testing/src/Microsoft.AspNetCore.Analyzer.Testing.csproj +++ b/src/TestingUtils/Microsoft.AspNetCore.Analyzer.Testing/src/Microsoft.AspNetCore.Analyzer.Testing.csproj @@ -7,6 +7,8 @@ false true + true + false diff --git a/src/TestingUtils/Microsoft.AspNetCore.Analyzer.Testing/src/TestSource.cs b/src/TestingUtils/Microsoft.AspNetCore.Analyzer.Testing/src/TestSource.cs index f88f68d7674..726204e059e 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Analyzer.Testing/src/TestSource.cs +++ b/src/TestingUtils/Microsoft.AspNetCore.Analyzer.Testing/src/TestSource.cs @@ -22,7 +22,7 @@ public class TestSource public static TestSource Read(string rawSource) { var testInput = new TestSource(); - var lines = rawSource.Split(new[] { Environment.NewLine }, StringSplitOptions.None); + var lines = rawSource.Split(new[] { "\n", "\r\n" }, StringSplitOptions.None); for (var i = 0; i < lines.Length; i++) { var line = lines[i]; diff --git a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/Microsoft.AspNetCore.Testing.csproj b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/Microsoft.AspNetCore.Testing.csproj index 64e0b3c4e1d..0e33852b62d 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/Microsoft.AspNetCore.Testing.csproj +++ b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/Microsoft.AspNetCore.Testing.csproj @@ -8,10 +8,15 @@ aspnetcore false true + false true + + + + diff --git a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/Properties/AssemblyInfo.cs b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 0212e111ee0..00000000000 --- a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,6 +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.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Microsoft.AspNetCore.Testing.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")] diff --git a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/TestPathUtilities.cs b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/TestPathUtilities.cs index ebd10897c38..f982471f39b 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/TestPathUtilities.cs +++ b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/TestPathUtilities.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -8,6 +8,11 @@ namespace Microsoft.AspNetCore.Testing { public class TestPathUtilities { + public static string GetRepoRootDirectory() + { + return GetSolutionRootDirectory("Extensions"); + } + public static string GetSolutionRootDirectory(string solution) { var applicationBasePath = AppContext.BaseDirectory; diff --git a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalFactDiscoverer.cs b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalFactDiscoverer.cs index 819373fa313..cf49b29e5a7 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalFactDiscoverer.cs +++ b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalFactDiscoverer.cs @@ -20,8 +20,8 @@ protected override IXunitTestCase CreateTestCase(ITestFrameworkDiscoveryOptions { var skipReason = testMethod.EvaluateSkipConditions(); return skipReason != null - ? new SkippedTestCase(skipReason, _diagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), testMethod) + ? new SkippedTestCase(skipReason, _diagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), TestMethodDisplayOptions.None, testMethod) : base.CreateTestCase(discoveryOptions, testMethod, factAttribute); } } -} \ No newline at end of file +} diff --git a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalTheoryAttribute.cs b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalTheoryAttribute.cs index 9249078cc5c..fe45f2ffc66 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalTheoryAttribute.cs +++ b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalTheoryAttribute.cs @@ -12,4 +12,4 @@ namespace Microsoft.AspNetCore.Testing.xunit public class ConditionalTheoryAttribute : TheoryAttribute { } -} \ No newline at end of file +} diff --git a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalTheoryDiscoverer.cs b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalTheoryDiscoverer.cs index d24421f5cd3..9e413cd5801 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalTheoryDiscoverer.cs +++ b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/ConditionalTheoryDiscoverer.cs @@ -14,11 +14,30 @@ public ConditionalTheoryDiscoverer(IMessageSink diagnosticMessageSink) { } + private sealed class OptionsWithPreEnumerationEnabled : ITestFrameworkDiscoveryOptions + { + private const string PreEnumerateTheories = "xunit.discovery.PreEnumerateTheories"; + + private readonly ITestFrameworkDiscoveryOptions _original; + + public OptionsWithPreEnumerationEnabled(ITestFrameworkDiscoveryOptions original) + => _original = original; + + public TValue GetValue(string name) + => (name == PreEnumerateTheories) ? (TValue)(object)true : _original.GetValue(name); + + public void SetValue(string name, TValue value) + => _original.SetValue(name, value); + } + + public override IEnumerable Discover(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, IAttributeInfo theoryAttribute) + => base.Discover(new OptionsWithPreEnumerationEnabled(discoveryOptions), testMethod, theoryAttribute); + protected override IEnumerable CreateTestCasesForTheory(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, IAttributeInfo theoryAttribute) { var skipReason = testMethod.EvaluateSkipConditions(); return skipReason != null - ? new[] { new SkippedTestCase(skipReason, DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), testMethod) } + ? new[] { new SkippedTestCase(skipReason, DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), TestMethodDisplayOptions.None, testMethod) } : base.CreateTestCasesForTheory(discoveryOptions, testMethod, theoryAttribute); } @@ -44,4 +63,4 @@ protected override IEnumerable CreateTestCasesForDataRow(ITestFr : base.CreateTestCasesForDataRow(discoveryOptions, testMethod, theoryAttribute, dataRow); } } -} \ No newline at end of file +} diff --git a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/SkippedTestCase.cs b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/SkippedTestCase.cs index c2e15fa640c..1c25c507b97 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/SkippedTestCase.cs +++ b/src/TestingUtils/Microsoft.AspNetCore.Testing/src/xunit/SkippedTestCase.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -16,8 +16,14 @@ public SkippedTestCase() : base() { } - public SkippedTestCase(string skipReason, IMessageSink diagnosticMessageSink, TestMethodDisplay defaultMethodDisplay, ITestMethod testMethod, object[] testMethodArguments = null) - : base(diagnosticMessageSink, defaultMethodDisplay, testMethod, testMethodArguments) + public SkippedTestCase( + string skipReason, + IMessageSink diagnosticMessageSink, + TestMethodDisplay defaultMethodDisplay, + TestMethodDisplayOptions defaultMethodDisplayOptions, + ITestMethod testMethod, + object[] testMethodArguments = null) + : base(diagnosticMessageSink, defaultMethodDisplay, defaultMethodDisplayOptions, testMethod, testMethodArguments) { _skipReason = skipReason; } @@ -37,4 +43,4 @@ public override void Serialize(IXunitSerializationInfo data) data.AddValue(nameof(_skipReason), _skipReason); } } -} \ No newline at end of file +} diff --git a/src/TestingUtils/Microsoft.AspNetCore.Testing/test/Microsoft.AspNetCore.Testing.Tests.csproj b/src/TestingUtils/Microsoft.AspNetCore.Testing/test/Microsoft.AspNetCore.Testing.Tests.csproj index 691c9ccd769..acfb34b3202 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Testing/test/Microsoft.AspNetCore.Testing.Tests.csproj +++ b/src/TestingUtils/Microsoft.AspNetCore.Testing/test/Microsoft.AspNetCore.Testing.Tests.csproj @@ -24,5 +24,4 @@ - diff --git a/src/TestingUtils/Microsoft.AspNetCore.Testing/test/TestPathUtilitiesTest.cs b/src/TestingUtils/Microsoft.AspNetCore.Testing/test/TestPathUtilitiesTest.cs index 0c9a7c5ee4a..c77194a548c 100644 --- a/src/TestingUtils/Microsoft.AspNetCore.Testing/test/TestPathUtilitiesTest.cs +++ b/src/TestingUtils/Microsoft.AspNetCore.Testing/test/TestPathUtilitiesTest.cs @@ -16,7 +16,7 @@ public void GetSolutionRootDirectory_ResolvesSolutionRoot() // Testing\test\Microsoft.AspNetCore.Testing.Tests\bin\Debug\netcoreapp2.0 // Testing\test\Microsoft.AspNetCore.Testing.Tests\bin\Debug\net461 // Testing\test\Microsoft.AspNetCore.Testing.Tests\bin\Debug\net46 - var expectedPath = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), "..", "..", "..", "..", "..", "..", "..")); + var expectedPath = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), "..", "..", "..", "..", "..")); Assert.Equal(expectedPath, TestPathUtilities.GetSolutionRootDirectory("Extensions")); } diff --git a/src/WebEncoders/src/Microsoft.Extensions.WebEncoders.csproj b/src/WebEncoders/src/Microsoft.Extensions.WebEncoders.csproj index 18f96d9412b..bc73592b3f5 100644 --- a/src/WebEncoders/src/Microsoft.Extensions.WebEncoders.csproj +++ b/src/WebEncoders/src/Microsoft.Extensions.WebEncoders.csproj @@ -7,6 +7,7 @@ true true aspnetcore + true diff --git a/version.props b/version.props deleted file mode 100644 index f009aa76df2..00000000000 --- a/version.props +++ /dev/null @@ -1,66 +0,0 @@ - - - 3 - 0 - 0 - preview - $(BUILD_BUILDNUMBER) - - - - - <_BuildNumber>$(OfficialBuildId) - - - <_BuildNumberYY>$(_BuildNumber.Substring(2, 2)) - <_BuildNumberMM>$(_BuildNumber.Substring(4, 2)) - <_BuildNumberDD>$(_BuildNumber.Substring(6, 2)) - <_BuildNumberR>$(_BuildNumber.Substring(9)) - - - <_BuildNumberShortDate>$([MSBuild]::Add($([MSBuild]::Add($([MSBuild]::Multiply($(_BuildNumberYY), 1000)), $([MSBuild]::Multiply($(_BuildNumberMM), 50)))), $(_BuildNumberDD))) - - $([System.Convert]::ToInt32($(_BuildNumberR))) - - <_BuildNumberSuffix>$(_BuildNumberShortDate).$(VersionSuffixBuildOfTheDay) - - - - <_BuildNumberSuffix Condition=" '$(_BuildNumberSuffix)' == '' ">0 - $(MajorVersion).$(MinorVersion).$(PatchVersion) - $(PreReleaseLabel).$(_BuildNumberSuffix) - - - true - - false - true - false - - - $(VersionPrefix) - $(VersionPrefix)-$(VersionSuffix) - - pb-$(DotNetProductBuildId) - $(VersionSuffix)+$(VersionMetadata) - - $(VersionPrefix)-$(VersionSuffix) - - - 0.1.$(PatchVersion) - $(ExperimentalVersionPrefix) - $(ExperimentalPackageVersion)-$(VersionSuffix) - $(VersionSuffix) - - - $(MajorVersion).$(MinorVersion).$([MSBuild]::Subtract($(PatchVersion), 1)) - - - - - - - - - -