Skip to content

Commit ca8e965

Browse files
committed
Update all of the current versions, not just the first one.
1 parent ab60969 commit ca8e965

File tree

1 file changed

+64
-25
lines changed

1 file changed

+64
-25
lines changed

src/Tasks/sdk-tasks/OverrideAndCreateBundledNETCoreAppPackageVersion.cs

Lines changed: 64 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33

44
#nullable disable
55

6+
using System;
7+
using System.IO;
8+
using System.Linq;
9+
using System.Xml.Linq;
610
using Microsoft.Build.Framework;
11+
using Microsoft.Build.Utilities;
712
using NuGet.Versioning;
813

914
namespace Microsoft.DotNet.Build.Tasks
@@ -40,14 +45,16 @@ public override bool Execute()
4045
ExecuteInternal(
4146
File.ReadAllText(Stage0MicrosoftNETCoreAppRefPackageVersionPath),
4247
MicrosoftNETCoreAppRefPackageVersion,
43-
NewSDKVersion));
48+
NewSDKVersion,
49+
Log));
4450
return true;
4551
}
4652

4753
public static string ExecuteInternal(
4854
string stage0MicrosoftNETCoreAppRefPackageVersionContent,
4955
string microsoftNETCoreAppRefPackageVersion,
50-
string newSDKVersion)
56+
string newSDKVersion,
57+
TaskLoggingHelper log = null)
5158
{
5259
var projectXml = XDocument.Parse(stage0MicrosoftNETCoreAppRefPackageVersionContent);
5360

@@ -77,6 +84,7 @@ public static string ExecuteInternal(
7784
propertyGroup.Element(ns + "BundledNETCoreAppPackageVersion").Value = newBundledPackageVersion;
7885

7986
var isNETServicing = IsNETServicing(originalBundledNETCoreAppPackageVersion);
87+
var currentTargetFramework = $"net{parsedMicrosoftNETCoreAppRefPackageVersion.Major}.0";
8088

8189
void CheckAndReplaceElement(XElement element)
8290
{
@@ -87,7 +95,7 @@ void CheckAndReplaceElement(XElement element)
8795
element.ToString(), element.Value, originalBundledNETCoreAppPackageVersion));
8896
}
8997

90-
Log.LogMessage(MessageImportance.High,
98+
log?.LogMessage(MessageImportance.High,
9199
$"Replacing element {element.Name} value '{element.Value}' with '{newBundledPackageVersion}'");
92100
element.Value = newBundledPackageVersion;
93101
}
@@ -103,7 +111,7 @@ void CheckAndReplaceAttribute(XAttribute attribute)
103111
originalBundledNETCoreAppPackageVersion));
104112
}
105113

106-
Log.LogMessage(MessageImportance.High,
114+
log?.LogMessage(MessageImportance.High,
107115
$"Replacing attribute {attribute.Name} value '{attribute.Value}' with '{newBundledPackageVersion}' in element {attribute.Parent.Name}");
108116
attribute.Value = newBundledPackageVersion;
109117
}
@@ -117,29 +125,60 @@ void CheckAndReplaceAttribute(XAttribute attribute)
117125

118126
if (!isNETServicing)
119127
{
120-
CheckAndReplaceAttribute(itemGroup
121-
.Elements(ns + "KnownFrameworkReference").First().Attribute("DefaultRuntimeFrameworkVersion"));
122-
CheckAndReplaceAttribute(itemGroup
123-
.Elements(ns + "KnownFrameworkReference").First().Attribute("TargetingPackVersion"));
128+
foreach (var element in itemGroup.Elements(ns + "KnownFrameworkReference")
129+
.Where(e => e.Attribute("TargetFramework")?.Value == currentTargetFramework))
130+
{
131+
CheckAndReplaceAttribute(element.Attribute("DefaultRuntimeFrameworkVersion"));
132+
CheckAndReplaceAttribute(element.Attribute("TargetingPackVersion"));
133+
}
124134
}
125135

126-
CheckAndReplaceAttribute(itemGroup
127-
.Elements(ns + "KnownFrameworkReference").First().Attribute("LatestRuntimeFrameworkVersion"));
128-
CheckAndReplaceAttribute(itemGroup
129-
.Elements(ns + "KnownAppHostPack").First().Attribute("AppHostPackVersion"));
130-
CheckAndReplaceAttribute(itemGroup
131-
.Elements(ns + "KnownCrossgen2Pack").First().Attribute("Crossgen2PackVersion"));
132-
CheckAndReplaceAttribute(itemGroup
133-
.Elements(ns + "KnownILCompilerPack").First().Attribute("ILCompilerPackVersion"));
134-
CheckAndReplaceAttribute(itemGroup
135-
.Elements(ns + "KnownILLinkPack").First().Attribute("ILLinkPackVersion"));
136-
CheckAndReplaceAttribute(itemGroup
137-
.Elements(ns + "KnownWebAssemblySdkPack").First().Attribute("WebAssemblySdkPackVersion"));
138-
CheckAndReplaceAttribute(itemGroup
139-
.Elements(ns + "KnownAspNetCorePack").First().Attribute("AspNetCorePackVersion"));
140-
141-
CheckAndReplaceAttribute(itemGroup
142-
.Elements(ns + "KnownRuntimePack").First().Attribute("LatestRuntimeFrameworkVersion"));
136+
foreach (var element in itemGroup.Elements(ns + "KnownFrameworkReference")
137+
.Where(e => e.Attribute("TargetFramework")?.Value == currentTargetFramework))
138+
{
139+
CheckAndReplaceAttribute(element.Attribute("LatestRuntimeFrameworkVersion"));
140+
}
141+
foreach (var element in itemGroup.Elements(ns + "KnownAppHostPack")
142+
.Where(e => e.Attribute("TargetFramework")?.Value == currentTargetFramework))
143+
{
144+
CheckAndReplaceAttribute(element.Attribute("AppHostPackVersion"));
145+
}
146+
147+
foreach (var element in itemGroup.Elements(ns + "KnownCrossgen2Pack")
148+
.Where(e => e.Attribute("TargetFramework")?.Value == currentTargetFramework))
149+
{
150+
CheckAndReplaceAttribute(element.Attribute("Crossgen2PackVersion"));
151+
}
152+
153+
foreach (var element in itemGroup.Elements(ns + "KnownILCompilerPack")
154+
.Where(e => e.Attribute("TargetFramework")?.Value == currentTargetFramework))
155+
{
156+
CheckAndReplaceAttribute(element.Attribute("ILCompilerPackVersion"));
157+
}
158+
159+
foreach (var element in itemGroup.Elements(ns + "KnownILLinkPack")
160+
.Where(e => e.Attribute("TargetFramework")?.Value == currentTargetFramework))
161+
{
162+
CheckAndReplaceAttribute(element.Attribute("ILLinkPackVersion"));
163+
}
164+
165+
// web assembly packs always use the latest regardless of the TFM
166+
foreach (var element in itemGroup.Elements(ns + "KnownWebAssemblySdkPack"))
167+
{
168+
CheckAndReplaceAttribute(element.Attribute("WebAssemblySdkPackVersion"));
169+
}
170+
171+
foreach (var element in itemGroup.Elements(ns + "KnownAspNetCorePack")
172+
.Where(e => e.Attribute("TargetFramework")?.Value == currentTargetFramework))
173+
{
174+
CheckAndReplaceAttribute(element.Attribute("AspNetCorePackVersion"));
175+
}
176+
177+
foreach (var element in itemGroup.Elements(ns + "KnownRuntimePack")
178+
.Where(e => e.Attribute("TargetFramework")?.Value == currentTargetFramework))
179+
{
180+
CheckAndReplaceAttribute(element.Attribute("LatestRuntimeFrameworkVersion"));
181+
}
143182

144183
return projectXml.ToString();
145184
}

0 commit comments

Comments
 (0)