From 6cf0323c7cc6c9404f05c020a5927dc544abcb59 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Wed, 31 Aug 2022 13:17:07 -0400 Subject: [PATCH 1/3] [workload] Update net6.0 KnownFrameworkReference A `Xamarin.Shared.Sdk.MultiTarget.targets` file has been added to update the ref/runtime pack versions associated with the .NET 6 SDK. This file will only be imported when using the .NET 6 SDK, and it should work around the need to add new net6 and net7 versioned aliases of the Ref and Runtime packs. Adding this file to `AfterMicrosoftNETSdkTargets` will ensure that it is imported last, after all KnownFrameworkReferences that need updating are declared. --- dotnet/.gitignore | 2 ++ dotnet/Makefile | 20 ++++++++++++++++ ...loadManifest.MacCatalyst.template.targets} | 4 ++++ ... => WorkloadManifest.iOS.template.targets} | 4 ++++ ...> WorkloadManifest.macOS.template.targets} | 4 ++++ ...=> WorkloadManifest.tvOS.template.targets} | 4 ++++ dotnet/generate-workloadmanifest-json.csharp | 23 ++----------------- .../Microsoft.Sdk.Versions.template.props | 6 ++--- ...in.Shared.Sdk.MultiTarget.template.targets | 11 +++++++++ 9 files changed, 54 insertions(+), 24 deletions(-) rename dotnet/Workloads/{Microsoft.NET.Sdk.MacCatalyst/WorkloadManifest.targets => WorkloadManifest.MacCatalyst.template.targets} (65%) rename dotnet/Workloads/{Microsoft.NET.Sdk.iOS/WorkloadManifest.targets => WorkloadManifest.iOS.template.targets} (75%) rename dotnet/Workloads/{Microsoft.NET.Sdk.macOS/WorkloadManifest.targets => WorkloadManifest.macOS.template.targets} (65%) rename dotnet/Workloads/{Microsoft.NET.Sdk.tvOS/WorkloadManifest.targets => WorkloadManifest.tvOS.template.targets} (65%) create mode 100644 dotnet/targets/Xamarin.Shared.Sdk.MultiTarget.template.targets diff --git a/dotnet/.gitignore b/dotnet/.gitignore index b5a837281066..d4a94303b7a6 100644 --- a/dotnet/.gitignore +++ b/dotnet/.gitignore @@ -1,11 +1,13 @@ tmpdir Workloads/Microsoft.NET.Sdk.*/LICENSE WorkloadManifest.json +WorkloadManifest.targets nupkgs Microsoft.*.Sdk/targets/Microsoft.*.Sdk.ImplicitNamespaceImports.props Microsoft.*.Sdk/targets/Microsoft.*.Sdk.SupportedTargetPlatforms.props Microsoft.*.Sdk/targets/Microsoft.*.Sdk.DefaultItems.props Microsoft.*.Sdk/targets/Microsoft.*.Sdk.Versions.props +Microsoft.*.Sdk/targets/Xamarin.Shared.Sdk.MultiTarget.targets Microsoft.*.Sdk/Sdk/AutoImport.props _pkg .stamp-* diff --git a/dotnet/Makefile b/dotnet/Makefile index 50f461ff8e40..a3aa21e34677 100644 --- a/dotnet/Makefile +++ b/dotnet/Makefile @@ -31,6 +31,7 @@ $(1)_NUGET_TARGETS = \ $(DOTNET_DESTDIR)/Microsoft.$(1).Sdk/targets/Microsoft.$(1).Sdk.Versions.props \ $(DOTNET_DESTDIR)/Microsoft.$(1).Sdk/targets/Microsoft.$(1).Sdk.targets \ $(DOTNET_DESTDIR)/Microsoft.$(1).Sdk/targets/Xamarin.Shared.Sdk.DefaultItems.targets \ + $(DOTNET_DESTDIR)/Microsoft.$(1).Sdk/targets/Xamarin.Shared.Sdk.MultiTarget.targets \ $(DOTNET_DESTDIR)/Microsoft.$(1).Sdk/targets/Xamarin.Shared.Sdk.Publish.targets \ $(DOTNET_DESTDIR)/Microsoft.$(1).Sdk/targets/Xamarin.Shared.Sdk.TargetFrameworkInference.props \ $(DOTNET_DESTDIR)/Microsoft.$(1).Sdk/targets/Xamarin.Shared.Sdk.props \ @@ -152,19 +153,37 @@ Microsoft.$(1).Sdk/targets/Microsoft.$(1).Sdk.SupportedTargetPlatforms.props: $( endef $(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call SupportedTargetPlatforms,$(platform)))) +define SharedAfterTargetsTemplate +Microsoft.$(1).Sdk/targets/Xamarin.Shared.Sdk.MultiTarget.targets: targets/Xamarin.Shared.Sdk.MultiTarget.template.targets Makefile $(TOP)/Make.config.inc $(TOP)/.git/HEAD $(TOP)/.git/index + $$(Q_GEN) sed \ + -e "s/@NET6_NUGET_VERSION_NO_METADATA@/$2/g" \ + $$< > $$@.tmp + $$(Q) mv $$@.tmp $$@ +endef +$(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call SharedAfterTargetsTemplate,$(platform),$(NET6_$(platform)_NUGET_VERSION_NO_METADATA)))) + define WorkloadTargets Workloads/Microsoft.NET.Sdk.$(1)/WorkloadManifest.json: Makefile $(TOP)/Make.config.inc $(TOP)/.git/HEAD $(TOP)/.git/index Makefile generate-workloadmanifest-json.csharp + $$(Q) mkdir -p Workloads/Microsoft.NET.Sdk.$(1)/ $$(Q) rm -f $$@.tmp $$(Q_GEN) ./generate-workloadmanifest-json.csharp "$(1)" "$(3)" "$(4)" "$$(DOTNET_$(5)_RUNTIME_IDENTIFIERS)" "$$@.tmp" "$$(DOTNET_WINDOWS_PLATFORMS)" $$(Q) mv $$@.tmp $$@ +Workloads/Microsoft.NET.Sdk.$(1)/WorkloadManifest.targets: Workloads/WorkloadManifest.$(1).template.targets Makefile $(TOP)/Make.config.inc $(TOP)/.git/HEAD $(TOP)/.git/index + $$(Q_GEN) sed \ + -e "s/@NUGET_VERSION_NO_METADATA@/$3/g" \ + $$< > $$@.tmp + $$(Q) mv $$@.tmp $$@ + Workloads/Microsoft.NET.Sdk.$(1)/LICENSE: $(TOP)/LICENSE $$(Q) $(CP) $$< $$@ WORKLOAD_TARGETS += Workloads/Microsoft.NET.Sdk.$(1)/WorkloadManifest.json +WORKLOAD_TARGETS += Workloads/Microsoft.NET.Sdk.$(1)/WorkloadManifest.targets WORKLOAD_TARGETS += Workloads/Microsoft.NET.Sdk.$(1)/LICENSE LOCAL_WORKLOAD_TARGETS += Workloads/Microsoft.NET.Sdk.$(1)/WorkloadManifest.json +LOCAL_WORKLOAD_TARGETS += Workloads/Microsoft.NET.Sdk.$(1)/WorkloadManifest.targets LOCAL_WORKLOAD_TARGETS += Workloads/Microsoft.NET.Sdk.$(1)/LICENSE endef $(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call WorkloadTargets,$(platform),$(shell echo $(platform) | tr A-Z a-z),$($(platform)_NUGET_VERSION_NO_METADATA),$(NET6_$(platform)_NUGET_VERSION_NO_METADATA),$(shell echo $(platform) | tr a-z A-Z)))) @@ -190,6 +209,7 @@ $(DOTNET_NUPKG_DIR)/SignList.targets: Workloads/SignList.targets TEMPLATED_FILES = \ $(foreach platform,$(DOTNET_PLATFORMS),Microsoft.$(platform).Sdk/targets/Microsoft.$(platform).Sdk.Versions.props) \ $(foreach platform,$(DOTNET_PLATFORMS),Microsoft.$(platform).Sdk/targets/Microsoft.$(platform).Sdk.SupportedTargetPlatforms.props) \ + $(foreach platform,$(DOTNET_PLATFORMS),Microsoft.$(platform).Sdk/targets/Xamarin.Shared.Sdk.MultiTarget.targets) \ nupkgs/$(IOS_WINDOWS_NUGET).%.nupkg: CURRENT_VERSION_NO_METADATA=$(IOS_WINDOWS_NUGET_VERSION_NO_METADATA) nupkgs/$(IOS_WINDOWS_NUGET).%.nupkg: CURRENT_VERSION_FULL=$(IOS_WINDOWS_NUGET_VERSION_FULL) diff --git a/dotnet/Workloads/Microsoft.NET.Sdk.MacCatalyst/WorkloadManifest.targets b/dotnet/Workloads/WorkloadManifest.MacCatalyst.template.targets similarity index 65% rename from dotnet/Workloads/Microsoft.NET.Sdk.MacCatalyst/WorkloadManifest.targets rename to dotnet/Workloads/WorkloadManifest.MacCatalyst.template.targets index ffdd636cb37a..a8d67d823f30 100644 --- a/dotnet/Workloads/Microsoft.NET.Sdk.MacCatalyst/WorkloadManifest.targets +++ b/dotnet/Workloads/WorkloadManifest.MacCatalyst.template.targets @@ -7,4 +7,8 @@ + + + $(AfterMicrosoftNETSdkTargets);$(_XamarinSdkRootDirectory)..\@NUGET_VERSION_NO_METADATA@\targets\Xamarin.Shared.Sdk.MultiTarget.targets + diff --git a/dotnet/Workloads/Microsoft.NET.Sdk.iOS/WorkloadManifest.targets b/dotnet/Workloads/WorkloadManifest.iOS.template.targets similarity index 75% rename from dotnet/Workloads/Microsoft.NET.Sdk.iOS/WorkloadManifest.targets rename to dotnet/Workloads/WorkloadManifest.iOS.template.targets index 957987c7c559..f9f9f344133b 100644 --- a/dotnet/Workloads/Microsoft.NET.Sdk.iOS/WorkloadManifest.targets +++ b/dotnet/Workloads/WorkloadManifest.iOS.template.targets @@ -9,4 +9,8 @@ + + + $(AfterMicrosoftNETSdkTargets);$(_XamarinSdkRootDirectory)..\@NUGET_VERSION_NO_METADATA@\targets\Xamarin.Shared.Sdk.MultiTarget.targets + diff --git a/dotnet/Workloads/Microsoft.NET.Sdk.macOS/WorkloadManifest.targets b/dotnet/Workloads/WorkloadManifest.macOS.template.targets similarity index 65% rename from dotnet/Workloads/Microsoft.NET.Sdk.macOS/WorkloadManifest.targets rename to dotnet/Workloads/WorkloadManifest.macOS.template.targets index 207c68bcdb58..eff3b68f5ee4 100644 --- a/dotnet/Workloads/Microsoft.NET.Sdk.macOS/WorkloadManifest.targets +++ b/dotnet/Workloads/WorkloadManifest.macOS.template.targets @@ -7,4 +7,8 @@ + + + $(AfterMicrosoftNETSdkTargets);$(_XamarinSdkRootDirectory)..\@NUGET_VERSION_NO_METADATA@\targets\Xamarin.Shared.Sdk.MultiTarget.targets + diff --git a/dotnet/Workloads/Microsoft.NET.Sdk.tvOS/WorkloadManifest.targets b/dotnet/Workloads/WorkloadManifest.tvOS.template.targets similarity index 65% rename from dotnet/Workloads/Microsoft.NET.Sdk.tvOS/WorkloadManifest.targets rename to dotnet/Workloads/WorkloadManifest.tvOS.template.targets index 9352012875e0..baeff41cdbac 100644 --- a/dotnet/Workloads/Microsoft.NET.Sdk.tvOS/WorkloadManifest.targets +++ b/dotnet/Workloads/WorkloadManifest.tvOS.template.targets @@ -7,4 +7,8 @@ + + + $(AfterMicrosoftNETSdkTargets);$(_XamarinSdkRootDirectory)..\@NUGET_VERSION_NO_METADATA@\targets\Xamarin.Shared.Sdk.MultiTarget.targets + diff --git a/dotnet/generate-workloadmanifest-json.csharp b/dotnet/generate-workloadmanifest-json.csharp index fba129d08ccd..e0dc4f8b2426 100755 --- a/dotnet/generate-workloadmanifest-json.csharp +++ b/dotnet/generate-workloadmanifest-json.csharp @@ -94,33 +94,14 @@ using (TextWriter writer = new StreamWriter (outputPath)) { writer.WriteLine ($" }}"); writer.WriteLine ($" }},"); } - writer.WriteLine ($" // The ref and runtime packs use the .net6 version, because when we load the .net6 SDK pack, it says to use the ref and runtime pack versions from the workload (**FromWorkload**)."); - writer.WriteLine ($" // This could be solvable with aliases as well, except that aliases doesn't work in this scenario (https://github.com/dotnet/sdk/issues/26384)."); - writer.WriteLine ($" // For the .net7 packs, we're stating the exact version to use in the KnownFrameworkReference item, so whatever we specify here is ignored."); writer.WriteLine ($" \"Microsoft.{platform}.Ref\": {{"); writer.WriteLine ($" \"kind\": \"framework\","); - writer.WriteLine ($" \"version\": \"{net6Version}\""); - writer.WriteLine ($" }},"); - writer.WriteLine ($" \"Microsoft.{platform}.Ref.net7\": {{"); - writer.WriteLine ($" \"kind\": \"framework\","); - writer.WriteLine ($" \"version\": \"{version}\","); - writer.WriteLine ($" \"alias-to\": {{"); - writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Ref\","); - writer.WriteLine ($" }}"); + writer.WriteLine ($" \"version\": \"{version}\""); writer.WriteLine ($" }},"); foreach (var rid in runtimeIdentifiers) { writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}\": {{"); writer.WriteLine ($" \"kind\": \"framework\","); - writer.WriteLine ($" \"version\": \"{net6Version}\""); - writer.WriteLine ($" }},"); - } - foreach (var rid in runtimeIdentifiers) { - writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}.net7\": {{"); - writer.WriteLine ($" \"kind\": \"framework\","); - writer.WriteLine ($" \"version\": \"{version}\","); - writer.WriteLine ($" \"alias-to\": {{"); - writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Runtime.{rid}\","); - writer.WriteLine ($" }}"); + writer.WriteLine ($" \"version\": \"{version}\""); writer.WriteLine ($" }},"); } writer.WriteLine ($" \"Microsoft.{platform}.Templates.net7\": {{"); diff --git a/dotnet/targets/Microsoft.Sdk.Versions.template.props b/dotnet/targets/Microsoft.Sdk.Versions.template.props index 40aa4d8e0130..f21bdadd3fa7 100644 --- a/dotnet/targets/Microsoft.Sdk.Versions.template.props +++ b/dotnet/targets/Microsoft.Sdk.Versions.template.props @@ -18,10 +18,10 @@ Include="Microsoft.@PLATFORM@" TargetFramework="@DOTNET_TFM@" RuntimeFrameworkName="Microsoft.@PLATFORM@" - DefaultRuntimeFrameworkVersion="@NUGET_VERSION_NO_METADATA@" - LatestRuntimeFrameworkVersion="@NUGET_VERSION_NO_METADATA@" + DefaultRuntimeFrameworkVersion="**FromWorkload**" + LatestRuntimeFrameworkVersion="**FromWorkload**" TargetingPackName="Microsoft.@PLATFORM@.Ref" - TargetingPackVersion="@NUGET_VERSION_NO_METADATA@" + TargetingPackVersion="**FromWorkload**" RuntimePackNamePatterns="Microsoft.@PLATFORM@.Runtime.**RID**" RuntimePackRuntimeIdentifiers="@RUNTIME_PACK_RUNTIME_IDENTIFIERS@" Profile="@PLATFORM@" diff --git a/dotnet/targets/Xamarin.Shared.Sdk.MultiTarget.template.targets b/dotnet/targets/Xamarin.Shared.Sdk.MultiTarget.template.targets new file mode 100644 index 000000000000..00e8e760d0af --- /dev/null +++ b/dotnet/targets/Xamarin.Shared.Sdk.MultiTarget.template.targets @@ -0,0 +1,11 @@ + + + + + + From 03aeb74039cae8c5d6501bd948b1039587134042 Mon Sep 17 00:00:00 2001 From: Peter Collins Date: Thu, 1 Sep 2022 17:02:17 -0400 Subject: [PATCH 2/3] [workload] Remove missed net7 pack declarations (#15844) Commit 53766eba attempted to remove all references to the `Ref` and `Runtime` packs that had a `.net7` alias, however one instance in the workload manifest was missed. --- dotnet/generate-workloadmanifest-json.csharp | 2 -- 1 file changed, 2 deletions(-) diff --git a/dotnet/generate-workloadmanifest-json.csharp b/dotnet/generate-workloadmanifest-json.csharp index e0dc4f8b2426..3889140f799c 100755 --- a/dotnet/generate-workloadmanifest-json.csharp +++ b/dotnet/generate-workloadmanifest-json.csharp @@ -40,10 +40,8 @@ using (TextWriter writer = new StreamWriter (outputPath)) { writer.WriteLine ($" \"Microsoft.{platform}.Windows.Sdk.Aliased.net7\","); writer.WriteLine ($" \"Microsoft.{platform}.Windows.Sdk.Aliased.net6\","); } - writer.WriteLine ($" \"Microsoft.{platform}.Ref.net7\","); writer.WriteLine ($" \"Microsoft.{platform}.Ref\","); foreach (var rid in runtimeIdentifiers) { - writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}.net7\","); writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}\","); } writer.WriteLine ($" \"Microsoft.{platform}.Templates.net7\""); From c1303496e4db4e2b6dcff7290fffdcf4dbafeb9c Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 8 Sep 2022 11:15:07 +0200 Subject: [PATCH 3/3] Don't use **FromWorkload**, it makes it complicated to use from a workload that wants to reference more than one set of ref/runtime packs. --- dotnet/targets/Microsoft.Sdk.Versions.template.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dotnet/targets/Microsoft.Sdk.Versions.template.props b/dotnet/targets/Microsoft.Sdk.Versions.template.props index f21bdadd3fa7..40aa4d8e0130 100644 --- a/dotnet/targets/Microsoft.Sdk.Versions.template.props +++ b/dotnet/targets/Microsoft.Sdk.Versions.template.props @@ -18,10 +18,10 @@ Include="Microsoft.@PLATFORM@" TargetFramework="@DOTNET_TFM@" RuntimeFrameworkName="Microsoft.@PLATFORM@" - DefaultRuntimeFrameworkVersion="**FromWorkload**" - LatestRuntimeFrameworkVersion="**FromWorkload**" + DefaultRuntimeFrameworkVersion="@NUGET_VERSION_NO_METADATA@" + LatestRuntimeFrameworkVersion="@NUGET_VERSION_NO_METADATA@" TargetingPackName="Microsoft.@PLATFORM@.Ref" - TargetingPackVersion="**FromWorkload**" + TargetingPackVersion="@NUGET_VERSION_NO_METADATA@" RuntimePackNamePatterns="Microsoft.@PLATFORM@.Runtime.**RID**" RuntimePackRuntimeIdentifiers="@RUNTIME_PACK_RUNTIME_IDENTIFIERS@" Profile="@PLATFORM@"