diff --git a/src/Containers/Microsoft.NET.Build.Containers/Resources/Strings.Designer.cs b/src/Containers/Microsoft.NET.Build.Containers/Resources/Strings.Designer.cs
index ec4966caaa27..6a4c5f63a1e5 100644
--- a/src/Containers/Microsoft.NET.Build.Containers/Resources/Strings.Designer.cs
+++ b/src/Containers/Microsoft.NET.Build.Containers/Resources/Strings.Designer.cs
@@ -654,7 +654,6 @@ internal static string NormalizedContainerName {
}
}
-
///
/// Looks up a localized string similar to Unable to create tarball for oci image with multiple tags..
///
diff --git a/src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImage.cs b/src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImage.cs
index 4c01694e7604..f981281448c7 100644
--- a/src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImage.cs
+++ b/src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImage.cs
@@ -143,6 +143,24 @@ internal async Task ExecuteAsync(CancellationToken cancellationToken)
}
}
+ // forcibly change the media type if required
+ if (ImageFormat is not null)
+ {
+ if (Enum.TryParse(ImageFormat, out var imageFormat))
+ {
+ imageBuilder.ManifestMediaType = imageFormat switch
+ {
+ KnownImageFormats.Docker => SchemaTypes.DockerManifestV2,
+ KnownImageFormats.OCI => SchemaTypes.OciManifestV1,
+ _ => imageBuilder.ManifestMediaType // should be impossible unless we add to the enum
+ };
+ }
+ else
+ {
+ Log.LogErrorWithCodeFromResources(nameof(Strings.InvalidContainerImageFormat), ImageFormat, string.Join(",", Enum.GetValues()));
+ }
+ }
+
Layer newLayer = Layer.FromDirectory(PublishDirectory, WorkingDirectory, imageBuilder.IsWindows, imageBuilder.ManifestMediaType);
imageBuilder.AddLayer(newLayer);
imageBuilder.SetWorkingDirectory(WorkingDirectory);
diff --git a/src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets b/src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets
index 694e1dc8372f..e2176eae697c 100644
--- a/src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets
+++ b/src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets
@@ -255,8 +255,8 @@
BaseRegistry="$(ContainerBaseRegistry)"
BaseImageName="$(ContainerBaseName)"
BaseImageTag="$(ContainerBaseTag)"
- ImageFormat="$(ContainerImageFormat)"
BaseImageDigest="$(ContainerBaseDigest)"
+ ImageFormat="$(ContainerImageFormat)"
LocalRegistry="$(LocalRegistry)"
OutputRegistry="$(ContainerRegistry)"
ArchiveOutputPath="$(ContainerArchiveOutputPath)"