Skip to content

Commit b529d52

Browse files
[build] use explicit folder names in DeleteExtractedWorkloadPacks (#6081)
When working on .NET 6, I've occasionally hit the build error: Microsoft.NET.TargetFrameworkInference.targets(109,5): error NETSDK1139: The target platform identifier android was not recognized. After looking at the contents of `dotnet\packs`, I have an empty folder such as: ~\android-toolchain\dotnet\packs\Microsoft.Android.Sdk.Windows\30.0.100-ci.main.76\ Yet the workload said it actually installed the pack: Writing workload pack installation record for Microsoft.Android.Sdk version 30.0.100-ci.main.76... I think the `dotnet workload` command must skip over folders if the folder *exists*. It does not actually validate if content is missing. To make matters worse, our logic would not actually delete folders when using this wildcard: <_PackFilesToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android*\**\*.*" /> Since there are no files, the `packs\Microsoft.Android.Sdk.Windows` folder would not be deleted. To solve this issue, I think we should just explicitly list each folder. There are not that many, and I don't anticipate us having a long list of packs. Additionally, let's delete the `metadata` folder as it stores information about which workloads are installed. It may be an additional source of confusion down the road.
1 parent 7c5fab1 commit b529d52

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

build-tools/create-packs/Directory.Build.targets

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,21 @@
119119

120120
<Target Name="DeleteExtractedWorkloadPacks" >
121121
<ItemGroup>
122-
<_PackFilesToDelete Include="$(DotNetPreviewPath)sdk-manifests\$(DotNetPreviewVersionBand)\microsoft.net.sdk.android\**\*.*" />
123-
<_PackFilesToDelete Include="$(DotNetPreviewPath)sdk-manifests\$(DotNetPreviewVersionBand)\microsoft.net.workload.android\**\*.*" />
124-
<_PackFilesToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android*\**\*.*" />
125-
<_PackFilesToDelete Include="$(DotNetPreviewPath)template-packs\Microsoft.Android.Templates.*.nupkg" />
122+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)metadata" />
123+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)sdk-manifests\$(DotNetPreviewVersionBand)\microsoft.net.sdk.android" />
124+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)sdk-manifests\$(DotNetPreviewVersionBand)\microsoft.net.workload.android" />
125+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android.Ref" />
126+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android.Runtime.android-arm" />
127+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android.Runtime.android-arm64" />
128+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android.Runtime.android-x86" />
129+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android.Runtime.android-x64" />
130+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android.Sdk.BundleTool" />
131+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android.Sdk.Darwin" />
132+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android.Sdk.Linux" />
133+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)packs\Microsoft.Android.Sdk.Windows" />
134+
<_PackFoldersToDelete Include="$(DotNetPreviewPath)template-packs" />
126135
</ItemGroup>
127-
<RemoveDir Directories="%(_PackFilesToDelete.RootDir)%(_PackFilesToDelete.Directory)" />
136+
<RemoveDir Directories="@(_PackFoldersToDelete)" />
128137
</Target>
129138

130139
<Target Name="PushManifestToBuildAssetRegistry" >

0 commit comments

Comments
 (0)