diff --git a/src/Tasks/Common/Resources/Strings.resx b/src/Tasks/Common/Resources/Strings.resx
index e6caab7c7c7f..7afca8b8de79 100644
--- a/src/Tasks/Common/Resources/Strings.resx
+++ b/src/Tasks/Common/Resources/Strings.resx
@@ -837,7 +837,7 @@ You may need to build the project on another operating system or architecture, o
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}NETSDK1184: The Targeting Pack for FrameworkReference '{0}' was not available. This may be because DisableTransitiveFrameworkReferenceDownloads was set to true.
diff --git a/src/Tasks/Common/Resources/xlf/Strings.cs.xlf b/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
index 8d7e270b7097..ec30fa91e4e1 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.de.xlf b/src/Tasks/Common/Resources/xlf/Strings.de.xlf
index d9eb3a393f3f..0f73f89d83e6 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.de.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.de.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.es.xlf b/src/Tasks/Common/Resources/xlf/Strings.es.xlf
index 2aa33940bd30..687c42d71702 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.es.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.es.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.fr.xlf b/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
index 25cc4ea000a2..95409a5d12a4 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.it.xlf b/src/Tasks/Common/Resources/xlf/Strings.it.xlf
index 11542802ea25..bdef216fa253 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.it.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.it.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.ja.xlf b/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
index 1606ae08aff0..16ed1f789583 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.ko.xlf b/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
index e0dd18eba9a9..92460cb2a4d1 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.pl.xlf b/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
index a6f4b97ede58..e1027e9272d5 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
@@ -9,8 +9,8 @@
- NETSDK1094: Nie można zoptymalizować zestawów pod kątem kompilacji z wyprzedzeniem: nie znaleziono prawidłowego pakietu środowiska uruchomieniowego. Ustaw właściwość PublishAot na wartość false lub użyj obsługiwanego identyfikatora środowiska uruchomieniowego podczas publikowania. W przypadku określania wartości docelowej platformy .NET 7 lub nowszej należy przywrócić pakiety z właściwością PublishAot ustawioną na wartość true.
- {StrBegin="NETSDK1094: "}
+ NETSDK1094: Nie można zoptymalizować zestawów pod kątem kompilacji z wyprzedzeniem: nie znaleziono prawidłowego pakietu środowiska uruchomieniowego. Ustaw właściwość PublishAot na wartość false lub użyj obsługiwanego identyfikatora środowiska uruchomieniowego podczas publikowania. W przypadku określania wartości docelowej platformy .NET 7 lub nowszej należy przywrócić pakiety z właściwością PublishAot ustawioną na wartość true.
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf b/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
index 5678d3d16519..81f104a398f8 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.ru.xlf b/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
index 10c14ba29892..b459d4ce4ac4 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.tr.xlf b/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
index ab7e8b9f1b8d..cbf95636c58a 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf b/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
index b5c55712c2a4..3759a269c009 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf b/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
index a1b0bfcc0951..790b6b293eb0 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
@@ -10,7 +10,7 @@
NETSDK1183: Unable to optimize assemblies for Ahead of time compilation: a valid runtime package was not found. Either set the PublishAot property to false, or use a supported runtime identifier when publishing. When targeting .NET 7 or higher, make sure to restore packages with the PublishAot property set to true.
- {StrBegin="NETSDK1094: "}
+ {StrBegin="NETSDK1183: "}
diff --git a/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs b/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs
index c674294f09e1..f4a88b1db5f8 100644
--- a/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs
+++ b/src/Tests/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs
@@ -286,6 +286,11 @@ public void NativeAot_hw_runs_with_PackageReference_PublishAot_is_enabled(string
publishCommand
.Execute($"/p:RuntimeIdentifier={rid}")
.Should().Pass();
+ // Having an explicit package reference will generate a warning
+ // Comment back after the below issue is fixed
+ // https://github.com/dotnet/sdk/issues/27533
+ //.And.HaveStdOutContaining("warning")
+ //.And.HaveStdOutContaining("Microsoft.DotNet.ILCompiler");
var publishDirectory = publishCommand.GetOutputDirectory(targetFramework: targetFramework, runtimeIdentifier: rid).FullName;
var sharedLibSuffix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".dll" : ".so";
@@ -335,24 +340,47 @@ public void NativeAot_hw_runs_with_PackageReference_PublishAot_is_empty(string t
.Should().Pass();
var publishDirectory = publishCommand.GetOutputDirectory(targetFramework: targetFramework, runtimeIdentifier: rid).FullName;
- var sharedLibSuffix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".dll" : ".so";
- var publishedDll = Path.Combine(publishDirectory, $"{projectName}{sharedLibSuffix}");
+ var publishedDll = Path.Combine(publishDirectory, $"{projectName}.dll");
var publishedExe = Path.Combine(publishDirectory, $"{testProject.Name}{Constants.ExeSuffix}");
- var symbolSuffix = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".pdb" : ".dbg";
- var publishedDebugFile = Path.Combine(publishDirectory, $"{testProject.Name}{symbolSuffix}");
- // NativeAOT published dir should not contain a non-host stand alone package
- File.Exists(publishedDll).Should().BeFalse();
- // The exe exist and should be native
- File.Exists(publishedExe).Should().BeTrue();
- File.Exists(publishedDebugFile).Should().BeTrue();
- IsNativeImage(publishedExe).Should().BeTrue();
+ // Not setting PublishAot to true will be a normal publish
+ // Comment back after the below issue is fixed
+ // https://github.com/dotnet/sdk/issues/27533
+ // File.Exists(publishedDll).Should().BeTrue();
var command = new RunExeCommand(Log, publishedExe)
.Execute().Should().Pass()
.And.HaveStdOutContaining("Hello World");
}
}
+
+ [RequiresMSBuildVersionTheory("17.0.0.32901")]
+ [InlineData(ToolsetInfo.CurrentTargetFramework)]
+ public void NativeAot_hw_runs_with_cross_target_PublishAot_is_enabled(string targetFramework)
+ {
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && (RuntimeInformation.OSArchitecture == System.Runtime.InteropServices.Architecture.X64))
+ {
+ var projectName = "HellowWorldNativeAotApp";
+ var rid = "win-arm64";
+
+ var testProject = CreateHelloWorldTestProject(targetFramework, projectName, true);
+ testProject.AdditionalProperties["PublishAot"] = "true";
+
+ var testAsset = _testAssetsManager.CreateTestProject(testProject);
+
+ var publishCommand = new PublishCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name));
+ publishCommand
+ .Execute($"/p:RuntimeIdentifier={rid}")
+ .Should().Pass();
+ var publishDirectory = publishCommand.GetOutputDirectory(targetFramework: targetFramework, runtimeIdentifier: rid).FullName;
+ var publishedDll = Path.Combine(publishDirectory, $"{projectName}.dll");
+ var publishedExe = Path.Combine(publishDirectory, $"{testProject.Name}{Constants.ExeSuffix}");
+ File.Exists(publishedDll).Should().BeFalse();
+ File.Exists(publishedExe).Should().BeTrue();
+
+ }
+ }
+
[RequiresMSBuildVersionTheory("17.0.0.32901")]
[InlineData(ToolsetInfo.CurrentTargetFramework)]
@@ -376,6 +404,17 @@ public void NativeAot_hw_runs_with_cross_PackageReference_PublishAot_is_enabled(
publishCommand
.Execute($"/p:RuntimeIdentifier={rid}")
.Should().Pass();
+ // Having an explicit package reference will generate a warning
+ // Comment back after the below issue is fixed
+ // https://github.com/dotnet/sdk/issues/27533
+ //.And.HaveStdOutContaining("warning")
+ //.And.HaveStdOutContaining("Microsoft.DotNet.ILCompiler");
+
+ var publishDirectory = publishCommand.GetOutputDirectory(targetFramework: targetFramework, runtimeIdentifier: rid).FullName;
+ var publishedDll = Path.Combine(publishDirectory, $"{projectName}.dll");
+ var publishedExe = Path.Combine(publishDirectory, $"{testProject.Name}{Constants.ExeSuffix}");
+ File.Exists(publishedDll).Should().BeFalse();
+ File.Exists(publishedExe).Should().BeTrue();
}
}
@@ -400,6 +439,14 @@ public void NativeAot_hw_runs_with_cross_PackageReference_PublishAot_is_empty(st
publishCommand
.Execute($"/p:RuntimeIdentifier={rid}")
.Should().Pass();
+
+ // Not setting PublishAot to true will be a normal publish
+ // Comment back after the below issue is fixed
+ // https://github.com/dotnet/sdk/issues/27533
+ var publishDirectory = publishCommand.GetOutputDirectory(targetFramework: targetFramework, runtimeIdentifier: rid).FullName;
+ var publishedDll = Path.Combine(publishDirectory, $"{projectName}.dll");
+ // File.Exists(publishedDll).Should().BeTrue();
+
}
}