From 0b0b4136fb6d6f6eda7a7af36b6033e95ea14bd5 Mon Sep 17 00:00:00 2001 From: Anipik Date: Wed, 29 Jan 2020 11:45:43 -0800 Subject: [PATCH 1/2] adding AddRuntimeOSTask --- .../src/AddRuntimeOSPropertyTask.cs | 46 +++++++++++++++++++ ...et.Build.Tasks.TargetFramework.Sdk.targets | 6 +++ 2 files changed, 52 insertions(+) create mode 100644 src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/AddRuntimeOSPropertyTask.cs diff --git a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/AddRuntimeOSPropertyTask.cs b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/AddRuntimeOSPropertyTask.cs new file mode 100644 index 00000000000..afc5b8ee673 --- /dev/null +++ b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/AddRuntimeOSPropertyTask.cs @@ -0,0 +1,46 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.Build.Construction; +using Microsoft.Build.Framework; + +namespace Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk +{ + public class AddRuntimeOSPropertyTask : BuildTask + { + public const string RuntimeOSProperty = "RuntimeOS"; + + [Required] + public string RuntimePropsFilePath {get ; set; } + + public override bool Execute() + { + ProjectRootElement project = ProjectRootElement.Create(); + CreateRuntimeIdentifier(project); + project.Save(RuntimePropsFilePath); + return !Log.HasLoggedErrors; + } + + public void CreateRuntimeIdentifier(ProjectRootElement project) + { + var rid = PlatformAbstractions.RuntimeEnvironment.GetRuntimeIdentifier(); + string[] ridParts = rid.Split('-'); + + if (ridParts.Length < 1) + { + throw new System.InvalidOperationException($"Unknown rid format {rid}."); + } + + string osNameAndVersion = ridParts[0]; + + var propertyGroup = project.CreatePropertyGroupElement(); + project.AppendChild(propertyGroup); + + var runtimeProperty = propertyGroup.AddProperty(RuntimeOSProperty, $"{osNameAndVersion}"); + runtimeProperty.Condition = $"'$({RuntimeOSProperty})' == ''"; + + Log.LogMessage($"Running on OS with RID {rid}, so defaulting RuntimeOS to '{osNameAndVersion}'"); + } + } +} diff --git a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets index ff961d705d3..6f1e3a2d421 100644 --- a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets +++ b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets @@ -3,6 +3,7 @@ + <_OriginalTargetFrameworks>$(TargetFrameworks) @@ -116,4 +117,9 @@ @(PackageTargetFrameworksFinalList) + + + + + From 3b561646f5c15216a46ac61d8df9cca32ba12946 Mon Sep 17 00:00:00 2001 From: Anipik Date: Wed, 29 Jan 2020 13:12:31 -0800 Subject: [PATCH 2/2] AddRuntimeOSPropertyTask -> GenerateRuntimeOSPropsFile --- .../src/AddRuntimeOSPropertyTask.cs | 2 +- .../Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/AddRuntimeOSPropertyTask.cs b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/AddRuntimeOSPropertyTask.cs index afc5b8ee673..c1fd9efbd4c 100644 --- a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/AddRuntimeOSPropertyTask.cs +++ b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/AddRuntimeOSPropertyTask.cs @@ -7,7 +7,7 @@ namespace Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk { - public class AddRuntimeOSPropertyTask : BuildTask + public class GenerateRuntimeOSPropsFile : BuildTask { public const string RuntimeOSProperty = "RuntimeOS"; diff --git a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets index 6f1e3a2d421..60226868739 100644 --- a/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets +++ b/src/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk/src/build/Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk.targets @@ -3,7 +3,7 @@ - + <_OriginalTargetFrameworks>$(TargetFrameworks) @@ -119,7 +119,7 @@ - +