diff --git a/Documentation/OneLocBuild.md b/Documentation/OneLocBuild.md
index 0cc4f6858a9..5ad1b1f506c 100644
--- a/Documentation/OneLocBuild.md
+++ b/Documentation/OneLocBuild.md
@@ -29,7 +29,7 @@ To prevent OneLocBuild from running in the public project where it will fail.
3. Run the pipeline you want to use OneLocBuild on your test branch.
4. Open a ticket with the localization team using
- [this template](https://ceapex.visualstudio.com/CEINTL/_workitems/create/Loc%20Request?templateId=60b0dcf9-9892-4910-934e-d5becddd1bc1&ownerId=c2e38d3d-0e9e-429f-955d-6e39fc6f0457).
+ [this template](https://aka.ms/ceChangeLocConfig).
Include the link to the test build you've done.
5. The loc team will generate an LCL package for you and send you its ID. It will be something like
`LCL-JUNO-PROD-YOURREPO`.
@@ -61,7 +61,7 @@ As a further note, the template by default assumes that your mirror repository i
organization. If that is not the case, you will need to specify `GitHubOrg` as well.
8. Merge the changes to your main branch and then open a
- [repo modification ticket](https://ceapex.visualstudio.com/CEINTL/_workitems/create/Loc%20Request?templateId=415a0569-35ed-45c3-9321-8b1affff1f52&ownerId=c2e38d3d-0e9e-429f-955d-6e39fc6f0457)
+ [repo modification ticket](https://aka.ms/ceChangeLocConfig)
with the loc team to let them know to retarget the branch.
@@ -82,7 +82,7 @@ If you're releasing from any other branch (including servicing branches), you mu
```yaml
MirrorBranch: target-branch
```
-2. Open a [repo modification ticket](https://ceapex.visualstudio.com/CEINTL/_workitems/create/Loc%20Request?templateId=415a0569-35ed-45c3-9321-8b1affff1f52&ownerId=c2e38d3d-0e9e-429f-955d-6e39fc6f0457) with the
+2. Open a [repo modification ticket](https://aka.ms/ceChangeLocConfig) with the
loc team at least two weeks before the release and request that they re-target your repository to the release branch.
3. Merge the OneLocBuild PRs to your release branch.
4. After the release, open another repo modification ticket to re-target your repository to the `main` branch again.
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 2a1c9e5de2f..c171325eed4 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -5,6 +5,7 @@ trigger:
- main
- release/3.x
- release/5.0
+ - release/6.0
pr:
branches:
@@ -12,6 +13,7 @@ pr:
- main
- release/3.x
- release/5.0
+ - release/6.0
- templates
variables:
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index f510811d22e..fa877beeab1 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -11,25 +11,25 @@
-
+
https://github.com/dotnet/arcade
- 474307e526160c813c9fd58060eb8356ccca6099
+ 923c95ec2e9512285f801c84145a8af3728b1e3b
-
+
https://github.com/dotnet/arcade
- 474307e526160c813c9fd58060eb8356ccca6099
+ 923c95ec2e9512285f801c84145a8af3728b1e3b
-
+
https://github.com/dotnet/arcade
- 474307e526160c813c9fd58060eb8356ccca6099
+ 923c95ec2e9512285f801c84145a8af3728b1e3b
-
+
https://github.com/dotnet/arcade
- 474307e526160c813c9fd58060eb8356ccca6099
+ 923c95ec2e9512285f801c84145a8af3728b1e3b
-
+
https://github.com/dotnet/arcade
- 474307e526160c813c9fd58060eb8356ccca6099
+ 923c95ec2e9512285f801c84145a8af3728b1e3b
https://github.com/dotnet/arcade-services
@@ -43,13 +43,13 @@
https://github.com/dotnet/xharness
2e03d2d1081b606ad3c5f79709297a9c5627854d
-
+
https://github.com/dotnet/roslyn
- 158f906df6b1e4ca99fe7cf6ed78822515d64230
+ 7f1cd24517a65bac2e6e921bf89c9b8d4e2696ca
-
+
https://github.com/mono/linker
- edad7cbe1c568d299c196883de57fb5519fd6399
+ a1f528d854ee057290682490a74e59a809fe453f
https://github.com/dotnet/sourcelink
@@ -68,9 +68,9 @@
https://github.com/dotnet/symreader-converter
c5ba7c88f92e2dde156c324a8c8edc04d9fa4fe0
-
+
https://github.com/dotnet/xliff-tasks
- 178ed3c7ed19e5bda54a8c3f15a5c441ee63ab93
+ bc3233146e1fcd393ed471d5005333c83363e0fe
diff --git a/eng/Versions.props b/eng/Versions.props
index 66a51cf30ff..ea1863cf98f 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -34,9 +34,9 @@
2.0.0
2.1.1
2.1.0
- 4.0.0-4.21420.19
+ 4.0.0-4.21427.11
16.7.1
- 6.0.100-preview.6.21424.4
+ 6.0.100-preview.6.21430.2
4.8.3
5.3.0.1
2.3.0
@@ -65,8 +65,8 @@
2.4.1
2.0.3
2.4.1
- 6.0.0-beta.21427.6
- 6.0.0-beta.21427.6
+ 6.0.0-beta.21451.3
+ 6.0.0-beta.21451.3
1.22.0
1.1.2
2.0.0
@@ -77,8 +77,8 @@
1.1.0-beta.20258.6
1.1.0-beta-21423-02
1.1.0-beta-21423-02
- 6.0.0-beta.21427.6
- 1.0.0-beta.21428.1
+ 6.0.0-beta.21451.3
+ 1.0.0-beta.21431.1
1.1.0-beta.21378.2
1.0.0-prerelease.21427.1
1.1.156602
diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake
index fc11001aa76..ec8971eb019 100644
--- a/eng/common/cross/toolchain.cmake
+++ b/eng/common/cross/toolchain.cmake
@@ -138,8 +138,8 @@ function(add_toolchain_linker_flag Flag)
if (NOT Config STREQUAL "")
set(CONFIG_SUFFIX "_${Config}")
endif()
- set("CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}" "${CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}} ${Flag}" PARENT_SCOPE)
- set("CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}" "${CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}} ${Flag}" PARENT_SCOPE)
+ set("CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}_INIT" "${CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}_INIT} ${Flag}" PARENT_SCOPE)
+ set("CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}_INIT" "${CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}_INIT} ${Flag}" PARENT_SCOPE)
endfunction()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index 56ee4a577ac..02347914f5d 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -709,6 +709,15 @@ function MSBuild() {
Write-PipelineSetVariable -Name 'NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS' -Value '20'
}
+ if ($ci) {
+ $env:NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY = 'true'
+ $env:NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT = 6
+ $env:NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS = 1000
+ Write-PipelineSetVariable -Name 'NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY' -Value 'true'
+ Write-PipelineSetVariable -Name 'NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT' -Value '6'
+ Write-PipelineSetVariable -Name 'NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS' -Value '1000'
+ }
+
$toolsetBuildProject = InitializeToolset
$basePath = Split-Path -parent $toolsetBuildProject
$possiblePaths = @(
@@ -717,6 +726,8 @@ function MSBuild() {
(Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.Arcade.Sdk.dll')),
(Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.ArcadeLogging.dll')),
(Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
+ (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.ArcadeLogging.dll')),
+ (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
)
$selectedPath = $null
foreach ($path in $possiblePaths) {
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index 41e323104df..6a4871ef72b 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -417,6 +417,13 @@ function MSBuild {
export NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS=20
Write-PipelineSetVariable -name "NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS" -value "20"
Write-PipelineSetVariable -name "NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS" -value "20"
+
+ export NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY=true
+ export NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT=6
+ export NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS=1000
+ Write-PipelineSetVariable -name "NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY" -value "true"
+ Write-PipelineSetVariable -name "NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT" -value "6"
+ Write-PipelineSetVariable -name "NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS" -value "1000"
fi
local toolset_dir="${_InitializeToolset%/*}"
@@ -427,6 +434,8 @@ function MSBuild {
possiblePaths+=( "$toolset_dir/$_InitializeBuildToolFramework/Microsoft.DotNet.Arcade.Sdk.dll" )
possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.ArcadeLogging.dll" )
possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.Arcade.Sdk.dll" )
+ possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.ArcadeLogging.dll" )
+ possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.Arcade.Sdk.dll" )
for path in "${possiblePaths[@]}"; do
if [[ -f $path ]]; then
selectedPath=$path
diff --git a/global.json b/global.json
index aefc817aafd..b90c255f11d 100644
--- a/global.json
+++ b/global.json
@@ -1,9 +1,9 @@
{
"tools": {
- "dotnet": "6.0.100-rc.1.21379.2"
+ "dotnet": "6.0.100-rc.1.21430.12"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.21427.6",
- "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.21427.6"
+ "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.21451.3",
+ "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.21451.3"
}
}
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryInfo.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryInfo.targets
index 5d426527496..e5c6b9b39e1 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryInfo.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryInfo.targets
@@ -67,11 +67,14 @@
- $(ScmRepositoryUrl.ToLower().Replace(`-trusted`,``))
+ $([MSBuild]::ValueOrDefault(`%(SourceRoot.ScmRepositoryUrl)`, ``).ToLower().Replace(`-trusted`,``))
$([System.Text.RegularExpressions.Regex]::Replace($(ScmRepositoryUrl), $(_TranslateUrlPattern), $(_TranslateUrlReplacement)))
+
+ $([MSBuild]::ValueOrDefault(`%(SourceRoot.ScmRepositoryUrl)`, ``).ToLower().Replace(`-trusted`,``))
+
$([System.Text.RegularExpressions.Regex]::Replace(%(SourceRoot.ScmRepositoryUrl), $(_TranslateUrlPattern), $(_TranslateUrlReplacement)))
diff --git a/src/Microsoft.DotNet.Build.Tasks.Packaging/src/build/Packaging.targets b/src/Microsoft.DotNet.Build.Tasks.Packaging/src/build/Packaging.targets
index ccdfb455ffa..8d8af6a664d 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Packaging/src/build/Packaging.targets
+++ b/src/Microsoft.DotNet.Build.Tasks.Packaging/src/build/Packaging.targets
@@ -929,6 +929,10 @@
@(NETCoreApp30RIDs)
+
+
+ @(NETCoreApp31RIDs)
+
@(NETCoreApp50RIDs)
diff --git a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateMsiBase.cs b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateMsiBase.cs
index c139e72dc51..11b7560fa4b 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateMsiBase.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateMsiBase.cs
@@ -110,6 +110,11 @@ public string SuppressIces
set;
}
+ ///
+ /// Used to synchronize access to the NuGet being extracted.
+ ///
+ private readonly object extractNuGetLock = new object();
+
///
/// Generate a set of MSIs for the specified platforms using the specified NuGet package.
///
@@ -118,7 +123,11 @@ public string SuppressIces
///
protected IEnumerable Generate(string sourcePackage, string swixPackageId, string outputPath, WorkloadPackKind kind, params string[] platforms)
{
- NugetPackage nupkg = new(sourcePackage, Log);
+ NugetPackage nupkg = null;
+ lock (extractNuGetLock)
+ {
+ nupkg = new(sourcePackage, Log);
+ }
List msis = new();
// MSI ProductName defaults to the package title and fallback to the package ID with a warning.
@@ -139,7 +148,10 @@ protected IEnumerable Generate(string sourcePackage, string swixPacka
if ((kind != WorkloadPackKind.Library) && (kind != WorkloadPackKind.Template))
{
Log.LogMessage(MessageImportance.Low, $"Extracting '{sourcePackage}' to '{packageContentsDirectory}'");
- nupkg.Extract(packageContentsDirectory, exclusions);
+ lock (extractNuGetLock)
+ {
+ nupkg.Extract(packageContentsDirectory, exclusions);
+ }
}
else
{
@@ -188,9 +200,12 @@ protected IEnumerable Generate(string sourcePackage, string swixPacka
SourceDirectory = packageContentsDirectory
};
- if (!heat.Execute())
+ lock (extractNuGetLock)
{
- throw new Exception($"Failed to harvest package contents.");
+ if (!heat.Execute())
+ {
+ throw new Exception($"Failed to harvest package contents.");
+ }
}
// Compile the MSI sources
diff --git a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateVisualStudioWorkload.cs b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateVisualStudioWorkload.cs
index bf7af320a1b..5d4a7c1aeed 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateVisualStudioWorkload.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateVisualStudioWorkload.cs
@@ -108,6 +108,15 @@ public string SuppressIces
set;
}
+ ///
+ /// Generate msis in parallel.
+ ///
+ public bool RunInParallel
+ {
+ get;
+ set;
+ } = true;
+
///
/// The paths of the generated .swixproj files.
///
@@ -182,6 +191,7 @@ internal IEnumerable GenerateMsisFromManifests(ITaskItem[] workloadMa
IntermediateBaseOutputPath = this.IntermediateBaseOutputPath,
OutputPath = this.OutputPath,
PackagesPath = this.PackagesPath,
+ RunInParallel = this.RunInParallel,
ShortNames = this.ShortNames,
SuppressIces = this.SuppressIces,
WixToolsetPath = this.WixToolsetPath,
diff --git a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateWorkloadMsis.cs b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateWorkloadMsis.cs
index 50340821555..8179d2164dc 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateWorkloadMsis.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/GenerateWorkloadMsis.cs
@@ -35,6 +35,15 @@ public string PackagesPath
set;
}
+ ///
+ /// Generate msis in parallel.
+ ///
+ public bool RunInParallel
+ {
+ get;
+ set;
+ } = true;
+
///
/// Gets the set of missing workload packs.
///
@@ -90,14 +99,24 @@ public override bool Execute()
string swixPackageId = $"{pack.Id.ToString().Replace(ShortNames)}.{pack.Version}";
// Always select the pack ID for the VS MSI package, even when aliased.
- packsToGenerate.Add(new(sourcePackage, swixPackageId, OutputPath, pack.Kind, platforms));
+ if (RunInParallel)
+ {
+ packsToGenerate.Add(new(sourcePackage, swixPackageId, OutputPath, pack.Kind, platforms));
+ }
+ else
+ {
+ msis.AddRange(Generate(sourcePackage, swixPackageId, OutputPath, pack.Kind, platforms));
+ }
}
}
- System.Threading.Tasks.Parallel.ForEach(packsToGenerate, p =>
+ if (RunInParallel)
{
- msis.AddRange(Generate(p.sourcePackage, p.swixPackageId, p.outputPath, p.kind, p.platforms));
- });
+ System.Threading.Tasks.Parallel.ForEach(packsToGenerate, p =>
+ {
+ msis.AddRange(Generate(p.sourcePackage, p.swixPackageId, p.outputPath, p.kind, p.platforms));
+ });
+ }
Msis = msis.ToArray();
MissingPacks = missingPacks.ToArray();
diff --git a/src/Microsoft.DotNet.Helix/Sdk/FindDotNetCliPackage.cs b/src/Microsoft.DotNet.Helix/Sdk/FindDotNetCliPackage.cs
index 5d82a45f509..1e00efe249b 100644
--- a/src/Microsoft.DotNet.Helix/Sdk/FindDotNetCliPackage.cs
+++ b/src/Microsoft.DotNet.Helix/Sdk/FindDotNetCliPackage.cs
@@ -3,6 +3,7 @@
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Build.Framework;
+using NuGet.Versioning;
namespace Microsoft.DotNet.Helix.Sdk
{
@@ -30,7 +31,7 @@ public class FindDotNetCliPackage : BaseTask
public string Runtime { get; set; }
///
- /// 'sdk', 'runtime' or 'aspnetcore-runtime'
+ /// 'sdk', 'runtime' or 'aspnetcore-runtime' (default is runtime)
///
[Required]
public string PackageType { get; set; }
@@ -49,7 +50,7 @@ private async Task ExecuteAsync()
NormalizeParameters();
await ResolveVersionAsync();
- string downloadUrl = GetDownloadUrl();
+ string downloadUrl = await GetDownloadUrlAsync();
Log.LogMessage($"Retrieved dotnet cli {PackageType} version {Version} package uri {downloadUrl}, testing...");
@@ -80,17 +81,75 @@ private async Task ExecuteAsync()
}
}
- private string GetDownloadUrl()
+ private async Task GetDownloadUrlAsync()
{
string extension = Runtime.StartsWith("win") ? "zip" : "tar.gz";
+ string effectiveVersion = await GetEffectiveVersion();
+
return PackageType switch
{
- "sdk" => $"{DotNetCliAzureFeed}/Sdk/{Version}/dotnet-sdk-{Version}-{Runtime}.{extension}",
- "aspnetcore-runtime" => $"{DotNetCliAzureFeed}/aspnetcore/Runtime/{Version}/aspnetcore-runtime-{Version}-{Runtime}.{extension}",
- _ => $"{DotNetCliAzureFeed}/Runtime/{Version}/dotnet-runtime-{Version}-{Runtime}.{extension}"
+ "sdk" => $"{DotNetCliAzureFeed}/Sdk/{Version}/dotnet-sdk-{effectiveVersion}-{Runtime}.{extension}",
+ "aspnetcore-runtime" => $"{DotNetCliAzureFeed}/aspnetcore/Runtime/{Version}/aspnetcore-runtime-{effectiveVersion}-{Runtime}.{extension}",
+ _ => $"{DotNetCliAzureFeed}/Runtime/{Version}/dotnet-runtime-{effectiveVersion}-{Runtime}.{extension}"
};
}
+ private async Task GetEffectiveVersion()
+ {
+ if (NuGetVersion.TryParse(Version, out NuGetVersion semanticVersion))
+ {
+ // Pared down version of the logic from https://github.com/dotnet/install-scripts/blob/main/src/dotnet-install.ps1
+ // If this functionality stops working, review changes made there.
+ // Current strategy is to start with a runtime-specific name then fall back to 'productVersion.txt'
+ string effectiveVersion = Version;
+
+ // Do nothing for older runtimes; the file won't exist
+ if (semanticVersion >= new NuGetVersion("5.0.0"))
+ {
+ var productVersionText = PackageType switch
+ {
+ "sdk" => await GetMatchingProductVersionTxtContents($"{DotNetCliAzureFeed}/Sdk/{Version}", "sdk-productVersion.txt"),
+ "aspnetcore-runtime" => await GetMatchingProductVersionTxtContents($"{DotNetCliAzureFeed}/aspnetcore/Runtime/{Version}", "aspnetcore-productVersion.txt"),
+ _ => await GetMatchingProductVersionTxtContents($"{DotNetCliAzureFeed}/Runtime/{Version}", "runtime-productVersion.txt")
+ };
+
+ if (!productVersionText.Equals(Version))
+ {
+ effectiveVersion = productVersionText;
+ Log.LogMessage($"Switched to effective .NET Core version '{productVersionText}' from matching productVersion.txt");
+ }
+ }
+ return effectiveVersion;
+ }
+ else
+ {
+ throw new ArgumentException($"'{Version}' is not a valid semantic version.");
+ }
+ }
+ private async Task GetMatchingProductVersionTxtContents(string baseUri, string customVersionTextFileName)
+ {
+ using HttpResponseMessage specificResponse = await _client.GetAsync($"{baseUri}/{customVersionTextFileName}");
+ if (specificResponse.StatusCode == HttpStatusCode.NotFound)
+ {
+ using HttpResponseMessage genericResponse = await _client.GetAsync($"{baseUri}/productVersion.txt");
+ if (genericResponse.StatusCode != HttpStatusCode.NotFound)
+ {
+ genericResponse.EnsureSuccessStatusCode();
+ return (await genericResponse.Content.ReadAsStringAsync()).Trim();
+ }
+ else
+ {
+ Log.LogMessage(MessageImportance.Low, $"No *productVersion.txt files found for {Version} under {baseUri}");
+ }
+ }
+ else
+ {
+ specificResponse.EnsureSuccessStatusCode();
+ return (await specificResponse.Content.ReadAsStringAsync()).Trim();
+ }
+ return Version;
+ }
+
private void NormalizeParameters()
{
if (string.Equals(Channel, "lts", StringComparison.OrdinalIgnoreCase))
@@ -136,9 +195,9 @@ private async Task ResolveVersionAsync()
Log.LogMessage(MessageImportance.Low, "Resolving latest dotnet cli version.");
string latestVersionUrl = PackageType switch
{
- "sdk" => $"{DotNetCliAzureFeed}/Sdk/{Channel}/latest.version",
+ "sdk" => $"{DotNetCliAzureFeed}/Sdk/{Channel}/latest.version",
"aspnetcore-runtime" => $"{DotNetCliAzureFeed}/aspnetcore/Runtime/{Channel}/latest.version",
- _ => $"{DotNetCliAzureFeed}/Runtime/{Channel}/latest.version"
+ _ => $"{DotNetCliAzureFeed}/Runtime/{Channel}/latest.version"
};
Log.LogMessage(MessageImportance.Low, $"Resolving latest version from url {latestVersionUrl}");
diff --git a/src/Microsoft.DotNet.Helix/Sdk/Microsoft.DotNet.Helix.Sdk.csproj b/src/Microsoft.DotNet.Helix/Sdk/Microsoft.DotNet.Helix.Sdk.csproj
index 2e510066ae4..7c4a029a946 100644
--- a/src/Microsoft.DotNet.Helix/Sdk/Microsoft.DotNet.Helix.Sdk.csproj
+++ b/src/Microsoft.DotNet.Helix/Sdk/Microsoft.DotNet.Helix.Sdk.csproj
@@ -12,6 +12,7 @@
+
diff --git a/src/Microsoft.DotNet.Helix/Sdk/tools/xharness-runner/XHarnessRunner.targets b/src/Microsoft.DotNet.Helix/Sdk/tools/xharness-runner/XHarnessRunner.targets
index d8f3802f7c3..91573291c8b 100644
--- a/src/Microsoft.DotNet.Helix/Sdk/tools/xharness-runner/XHarnessRunner.targets
+++ b/src/Microsoft.DotNet.Helix/Sdk/tools/xharness-runner/XHarnessRunner.targets
@@ -10,7 +10,7 @@
$(AspNetCoreRuntimeVersion)
-->
sdk
- 6.0.100-rc.1.21379.2
+ 6.0.100-rc.1.21430.12
$(AspNetCoreRuntimeVersion)
diff --git a/src/Microsoft.DotNet.RemoteExecutor/src/Microsoft.DotNet.RemoteExecutor.csproj b/src/Microsoft.DotNet.RemoteExecutor/src/Microsoft.DotNet.RemoteExecutor.csproj
index 24b5c5f1caf..8da0c48f81d 100644
--- a/src/Microsoft.DotNet.RemoteExecutor/src/Microsoft.DotNet.RemoteExecutor.csproj
+++ b/src/Microsoft.DotNet.RemoteExecutor/src/Microsoft.DotNet.RemoteExecutor.csproj
@@ -4,7 +4,7 @@
Exe
- netcoreapp2.1;net461
+ netcoreapp3.1;net461
This package provides support for running tests out-of-process.
true
true