Blame SOURCES/installer-14792-mono.patch

ccd8ec
Please note that the paths in this patch have been manually modified so
ccd8ec
we can apply it against an already-built tarball. 
ccd8ec
ccd8ec
From 9a7d07ab5a163b75a7b82cf8883d32553f34dcdb Mon Sep 17 00:00:00 2001
ccd8ec
From: Tom Deseyn <tom.deseyn@gmail.com>
ccd8ec
Date: Wed, 19 Oct 2022 15:21:40 +0200
ccd8ec
Subject: [PATCH] Enabled source-building with mono runtime on any
ccd8ec
 architecture.
ccd8ec
ccd8ec
Adds an argument to the top-level build script to use the mono
ccd8ec
runtime, and sets the flags needed for the different repos
ccd8ec
to work with mono.
ccd8ec
---
ccd8ec
 eng/SourceBuild.props                         |  1 +
ccd8ec
 .../tarball/content/Directory.Build.props     |  5 ++
ccd8ec
 src/SourceBuild/tarball/content/build.sh      |  4 ++
ccd8ec
 .../content/repos/Directory.Build.props       |  1 +
ccd8ec
 ...d-support-building-with-mono-runtime.patch | 24 +++++++++
ccd8ec
 ...d-support-building-with-mono-runtime.patch | 24 +++++++++
ccd8ec
 ...d-support-building-with-mono-runtime.patch | 51 +++++++++++++++++++
ccd8ec
 7 files changed, 110 insertions(+)
ccd8ec
 create mode 100644 src/SourceBuild/tarball/patches/aspnetcore/0002-source-build-support-building-with-mono-runtime.patch
ccd8ec
 create mode 100644 src/SourceBuild/tarball/patches/runtime/0001-source-build-support-building-with-mono-runtime.patch
ccd8ec
 create mode 100644 src/SourceBuild/tarball/patches/sdk/0001-source-build-support-building-with-mono-runtime.patch
ccd8ec
ccd8ec
diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
ccd8ec
index a2831d57455..9ebca97ff90 100644
ccd8ec
--- a/src/installer/eng/SourceBuild.props
ccd8ec
+++ b/src/installer/eng/SourceBuild.props
ccd8ec
@@ -11,6 +11,7 @@
ccd8ec
       <InnerBuildArgs>$(InnerBuildArgs) /p:IncludeNuGetPackageArchive=false</InnerBuildArgs>
ccd8ec
       <InnerBuildArgs>$(InnerBuildArgs) /p:IncludeAdditionalSharedFrameworks=false</InnerBuildArgs>
ccd8ec
       <InnerBuildArgs>$(InnerBuildArgs) /p:IncludeSharedFrameworksForBackwardsCompatibilityTests=false</InnerBuildArgs>
ccd8ec
+      <InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:DISABLE_CROSSGEN=true</InnerBuildArgs>
ccd8ec
     </PropertyGroup>
ccd8ec
   </Target>
ccd8ec
 
ccd8ec
diff --git a/Directory.Build.props b/Directory.Build.props
ccd8ec
index 860785575f7..982fb7f0725 100644
ccd8ec
--- a/Directory.Build.props
ccd8ec
+++ b/Directory.Build.props
ccd8ec
@@ -24,6 +24,11 @@
ccd8ec
 
ccd8ec
     <UseStableVersions Condition="'$(UseStableVersions)' == ''">false</UseStableVersions>
ccd8ec
 
ccd8ec
+    <SourceBuildUseMonoRuntime>false</SourceBuildUseMonoRuntime>
ccd8ec
+    
ccd8ec
+    <SourceBuildUseMonoRuntime Condition="'$(BuildArchitecture)' == 's390x'">true</SourceBuildUseMonoRuntime>
ccd8ec
+    <SourceBuildUseMonoRuntime Condition="'$(BuildArchitecture)' == 'ppc64le'">true</SourceBuildUseMonoRuntime>
ccd8ec
+
ccd8ec
     
ccd8ec
          or portable SDK.  The PortableBuild flag is only set in runtime-portable.proj and should
ccd8ec
          no longer be passed in.  -->
ccd8ec
diff --git a/build.sh b/build.sh
ccd8ec
index e899d2f808c..17699c78cb7 100755
ccd8ec
--- a/build.sh
ccd8ec
+++ b/build.sh
ccd8ec
@@ -11,6 +11,7 @@ usage() {
ccd8ec
     echo "  --run-smoke-test                   don't build; run smoke tests"
ccd8ec
     echo "  --with-packages <dir>              use the specified directory of previously-built packages"
ccd8ec
     echo "  --with-sdk <dir>                   use the SDK in the specified directory for bootstrapping"
ccd8ec
+    echo "  --use-mono-runtime                 output uses the mono runtime"
ccd8ec
     echo "use -- to send the remaining arguments to MSBuild"
ccd8ec
     echo ""
ccd8ec
 }
ccd8ec
@@ -65,6 +66,9 @@ while :; do
ccd8ec
             fi
ccd8ec
             shift
ccd8ec
             ;;
ccd8ec
+        --use-mono-runtime)
ccd8ec
+            MSBUILD_ARGUMENTS+=( "/p:SourceBuildUseMonoRuntime=true" )
ccd8ec
+            ;;
ccd8ec
         --)
ccd8ec
             shift
ccd8ec
             echo "Detected '--': passing remaining parameters '$@' as build.sh arguments."
ccd8ec
diff --git a/repos/Directory.Build.props b/repos/Directory.Build.props
ccd8ec
index e4e3060af7f..04ab89d11dc 100644
ccd8ec
--- a/repos/Directory.Build.props
ccd8ec
+++ b/repos/Directory.Build.props
ccd8ec
@@ -143,6 +143,7 @@
ccd8ec
     <StandardSourceBuildArgs>$(StandardSourceBuildArgs) /p:AdditionalSourceBuiltNupkgCacheDir="$(SourceBuiltPackagesPath)"</StandardSourceBuildArgs>
ccd8ec
     <StandardSourceBuildArgs>$(StandardSourceBuildArgs) /p:ReferencePackageNupkgCacheDir="$(ReferencePackagesDir)"</StandardSourceBuildArgs>
ccd8ec
     <StandardSourceBuildArgs>$(StandardSourceBuildArgs) /p:PreviouslySourceBuiltNupkgCacheDir="$(PrebuiltSourceBuiltPackagesPath)"</StandardSourceBuildArgs>
ccd8ec
+    <StandardSourceBuildArgs>$(StandardSourceBuildArgs) /p:SourceBuildUseMonoRuntime=$(SourceBuildUseMonoRuntime)</StandardSourceBuildArgs>
ccd8ec
 
ccd8ec
     <StandardSourceBuildCommand>$(ProjectDirectory)\build$(ShellExtension)</StandardSourceBuildCommand>
ccd8ec
   </PropertyGroup>
ccd8ec
diff --git a/src/aspnetcore/eng/SourceBuild.props b/src/aspnetcore/eng/SourceBuild.props
ccd8ec
index 32108e1f..3dfbd5ef 100644
ccd8ec
--- a/src/aspnetcore/eng/SourceBuild.props
ccd8ec
+++ b/src/aspnetcore/eng/SourceBuild.props
ccd8ec
@@ -55,6 +55,7 @@
ccd8ec
 
ccd8ec
     <PropertyGroup>
ccd8ec
       <InnerBuildArgs>$(InnerBuildArgs) /p:SourceBuildRuntimeIdentifier=$(TargetRuntimeIdentifier)</InnerBuildArgs>
ccd8ec
+      <InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:CrossgenOutput=false</InnerBuildArgs>
ccd8ec
     </PropertyGroup>
ccd8ec
   </Target>
ccd8ec
 
ccd8ec
diff --git a/src/runtime/eng/SourceBuild.props b/src/runtime/eng/SourceBuild.props
ccd8ec
index c197d8afd..55c1c1d22 100644
ccd8ec
--- a/src/runtime/eng/SourceBuild.props
ccd8ec
+++ b/src/runtime/eng/SourceBuild.props
ccd8ec
@@ -41,6 +41,7 @@
ccd8ec
       <InnerBuildArgs>$(InnerBuildArgs) /p:BuildDebPackage=false</InnerBuildArgs>
ccd8ec
       <InnerBuildArgs>$(InnerBuildArgs) /p:EnableNgenOptimization=false</InnerBuildArgs>
ccd8ec
       <InnerBuildArgs>$(InnerBuildArgs) /p:EnablePackageValidation=false</InnerBuildArgs>
ccd8ec
+      <InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:PrimaryRuntimeFlavor=Mono /p:RuntimeFlavor=Mono</InnerBuildArgs>
ccd8ec
     </PropertyGroup>
ccd8ec
   </Target>
ccd8ec
 
ccd8ec
diff --git a/src/sdk/eng/SourceBuild.props b/src/sdk/eng/SourceBuild.props
ccd8ec
index 61b9a913708..2107a718419 100644
ccd8ec
--- a/src/sdk/eng/SourceBuild.props
ccd8ec
+++ b/src/sdk/eng/SourceBuild.props
ccd8ec
@@ -8,6 +8,7 @@
ccd8ec
     <PropertyGroup>
ccd8ec
       <InnerBuildArgs>$(InnerBuildArgs) /p:Projects="$(InnerSourceBuildRepoRoot)\source-build.slnf"</InnerBuildArgs>
ccd8ec
       <InnerBuildArgs>$(InnerBuildArgs) /p:UseSharedCompilation=false</InnerBuildArgs>
ccd8ec
+      <InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:NativeAotSupported=false</InnerBuildArgs>
ccd8ec
     </PropertyGroup>
ccd8ec
   </Target>
ccd8ec
 
ccd8ec
diff --git a/src/sdk/src/Layout/redist/targets/BundledSdks.targets b/src/sdk/src/Layout/redist/targets/BundledSdks.targets
ccd8ec
index 6f8b0fc3b33..64638ef1cff 100644
ccd8ec
--- a/src/sdk/src/Layout/redist/targets/BundledSdks.targets
ccd8ec
+++ b/src/sdk/src/Layout/redist/targets/BundledSdks.targets
ccd8ec
@@ -5,6 +5,6 @@
ccd8ec
     <BundledSdk Include="FSharp.NET.Sdk" Version="1.0.4-bundled-0100" />
ccd8ec
     <BundledSdk Include="Microsoft.Docker.Sdk" Version="1.1.0" />
ccd8ec
     <BundledSdk Include="Microsoft.NET.ILLink.Tasks" Version="$(MicrosoftNETILLinkTasksPackageVersion)" />
ccd8ec
-    <BundledSdk Include="Microsoft.DotNet.ILCompiler" Version="$(MicrosoftDotNetILCompilerPackageVersion)" />
ccd8ec
+    <BundledSdk Include="Microsoft.DotNet.ILCompiler" Version="$(MicrosoftDotNetILCompilerPackageVersion)" Condition="'$(NativeAotSupported)' != 'false'" />
ccd8ec
   </ItemGroup>
ccd8ec
 </Project>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/Strings.resx b/src/sdk/src/Tasks/Common/Resources/Strings.resx
ccd8ec
index a347c736df5..426cb6aa96d 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/Strings.resx
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/Strings.resx
ccd8ec
@@ -875,4 +875,8 @@ You may need to build the project on another operating system or architecture, o
ccd8ec
     <value>NETSDK1191: A runtime identifier for the property '{0}' couldn't be inferred. Specify a rid explicitly.</value>
ccd8ec
       <comment>{StrBegin="NETSDK1191: "}</comment>
ccd8ec
   </data>
ccd8ec
+  <data name="AotNotSupported" xml:space="preserve">
ccd8ec
+    <value>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</value>
ccd8ec
+      <comment>{StrBegin="NETSDK1193: "}</comment>
ccd8ec
+  </data>
ccd8ec
 </root>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.cs.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
ccd8ec
index e477f7a489b..c75990f94e2 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: Sestavení nelze optimalizovat pro kompilaci s předstihem: nebyl nalezen platný balíček modulu runtime. Buď nastavte vlastnost PublishAot na hodnotu false, nebo při publikování použijte podporovaný identifikátor modulu runtime. Při cílení na .NET 7 nebo vyšší nezapomeňte obnovit balíčky s vlastností PublishAot nastavenou na hodnotu true.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: Konfigurační soubor aplikace musí obsahovat kořenový element konfigurace.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.de.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.de.xlf
ccd8ec
index d8cd9725269..2e427931dd1 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.de.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.de.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: Assemblys können nicht für Ahead-of-time-Kompilierung optimiert werden: Es wurde kein gültiges Runtimepaket gefunden. Legen Sie entweder die PublishAot-Eigenschaft auf FALSE fest, oder verwenden Sie beim Veröffentlichen einen unterstützten Runtimebezeichner. Wenn Sie .NET 7 oder höher verwenden, stellen Sie sicher, dass Sie Pakete wiederherstellen, bei denen die PublishAot-Eigenschaft auf TRUE festgelegt ist.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: Die Anwendungskonfigurationsdatei muss das Stammkonfigurationselement enthalten.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.es.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.es.xlf
ccd8ec
index 4c61e20b937..cb654c521fb 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.es.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.es.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: No se pueden optimizar los ensamblados para la compilación Ahead of time: no se ha encontrado un paquete en tiempo de ejecución válido. Establezca la propiedad PublishAot en false o use un identificador de tiempo de ejecución compatible al publicar. Cuando el destino sea .NET 7 o una versión posterior, asegúrese de restaurar los paquetes con la propiedad PublishAot establecida en true.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: El archivo de configuración de la aplicación debe tener el elemento de configuración raíz.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.fr.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
ccd8ec
index dfbb0391549..a97af754880 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: Impossible d'optimiser les assemblys pour la compilation Ahead of time : un package d'exécution valide n'a pas été trouvé. Définissez la propriété PublishAot sur false ou utilisez un identificateur d'exécution pris en charge lors de la publication. Lorsque vous ciblez .NET 7 ou supérieur, assurez-vous de restaurer les packages avec la propriété PublishAot définie sur true.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: Le fichier de configuration de l'application doit avoir un élément de configuration racine.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.it.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.it.xlf
ccd8ec
index a768517271c..70fe2939526 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.it.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.it.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: non è possibile ottimizzare gli assembly per la compilazione Ahead Of Time perché non è stato trovato alcun pacchetto di runtime valido. Impostare la proprietà PublishAot su false oppure usare un identificatore di runtime supportato durante la pubblicazione. Quando si usa .NET 7 o versioni successive, assicurarsi di ripristinare i pacchetti con la proprietà PublishAot impostata su true.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: il file di configurazione dell'applicazione deve avere un elemento di configurazione radice.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ja.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
ccd8ec
index c3713a3bb6f..42ba79f1034 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: Ahead Of Time コンパイル用にアセンブリを最適化できません: 有効なランタイム パッケージが見つかりませんでした。PublishAot プロパティを false に設定するか、公開時に、サポートされているランタイム識別子を使用してください。.NET 7 以降を対象とする場合は、必ず PublishAot プロパティを true に設定してパッケージを復元してください。</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: アプリケーション構成ファイルには、ルート構成要素が必要です。</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ko.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
ccd8ec
index 86d77d024ad..f9695e37529 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: Ahead of Time 컴파일을 위해 어셈블리를 최적화할 수 없습니다. 유효한 런타임 패키지를 찾을 수 없습니다. PublishAot 속성을 false로 설정하거나 게시할 때 지원되는 런타임 식별자를 사용하세요. .NET 7 이상을 대상으로 하는 경우 PublishAot 속성이 true로 설정된 패키지를 복원해야 합니다.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: 애플리케이션 구성 파일에는 루트 구성 요소가 있어야 합니다.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pl.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
ccd8ec
index b954c4f64f5..0594cfc5bad 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: 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.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: Plik konfiguracji aplikacji musi mieć główny element konfiguracji.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
ccd8ec
index 4153425cfce..ae701f4dc3b 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: Não é possível otimizar assemblies para compilação antecipada: um pacote de tempo de execução válido não foi encontrado. Defina a propriedade PublishAot como false ou use um identificador de tempo de execução com suporte ao publicar. Ao direcionar o .NET 7 ou superior, certifique-se de restaurar os pacotes com a propriedade PublishAot definida como true.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: o arquivo de configuração do aplicativo deve ter um elemento de configuração raiz.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ru.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
ccd8ec
index e66e13cd417..1780c0eb89b 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: не удалось оптимизировать сборки для компиляции Ahead Of Time: не найден допустимый пакет среды выполнения. Задайте для свойства PublishAot значение false либо используйте поддерживаемый идентификатор среды выполнения при публикации. При выборе .NET 7 или более поздней версии в качестве цели восстановите пакеты со свойством PublishAot со значением true.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: В файле конфигурации приложения должен присутствовать корневой элемент конфигурации.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.tr.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
ccd8ec
index 4121fe024d6..d4ec2bbfea3 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: Derlemeler, AOT derlemesi için iyileştirilemedi: geçerli bir çalışma zamanı paketi bulunamadı. PublishAot özelliğini false olarak ayarlayın veya yayımlarken desteklenen bir çalışma zamanı tanımlayıcısı kullanın. .NET 7 veya üzerini hedeflerken PublishAot özelliği true olarak ayarlanmış paketleri geri yüklediğinizden emin olun.</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: Uygulama yapılandırma dosyasının kök yapılandırma öğesi olmalıdır.</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
ccd8ec
index 5bd5617ccba..77323667f98 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: 无法优化程序集以实现提前编译: 找不到有效的运行时包。将 PublishAot 属性设置为 false,或在发布时使用支持的运行时标识符。面向 .NET 7 或更高版本时,请确保还原将 PublishAot 属性设置为 true 的包。</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: 应用程序配置文件必须具有根配置元素。</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
ccd8ec
index c2e6be8b9be..ae573c7ed8b 100644
ccd8ec
--- a/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
ccd8ec
+++ b/src/sdk/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
ccd8ec
@@ -12,6 +12,11 @@
ccd8ec
         <target state="translated">NETSDK1183: 無法為提前編譯最佳化組件: 找不到有效的執行階段套件。請將 PublishAot 屬性設為 false,或在發佈時使用支援的執行階段識別碼。以 .NET 7 或更高版本為目標時,請務必還原套件,將 PublishAot 屬性設為 true。</target>
ccd8ec
         <note>{StrBegin="NETSDK1183: "}</note>
ccd8ec
       </trans-unit>
ccd8ec
+      <trans-unit id="AotNotSupported">
ccd8ec
+        <source>NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</source>
ccd8ec
+        <target state="new">NETSDK1193: The SDK does not support Ahead of time compilation. Set the PublishAot property to false.</target>
ccd8ec
+        <note>{StrBegin="NETSDK1193: "}</note>
ccd8ec
+      </trans-unit>
ccd8ec
       <trans-unit id="AppConfigRequiresRootConfiguration">
ccd8ec
         <source>NETSDK1070: The application configuration file must have root configuration element.</source>
ccd8ec
         <target state="translated">NETSDK1070: 應用程式組態檔必須有根組態元素。</target>
ccd8ec
diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
ccd8ec
index 84b21ee0dd8..72d10f518af 100644
ccd8ec
--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
ccd8ec
+++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
ccd8ec
@@ -178,6 +178,9 @@ Copyright (c) .NET Foundation. All rights reserved.
ccd8ec
                 ResourceName="ImplicitRuntimeIdentifierResolutionForPublishPropertyFailed"
ccd8ec
                 FormatArguments="PublishAot"/>
ccd8ec
 
ccd8ec
+    
ccd8ec
+                ResourceName="AotNotSupported" />
ccd8ec
+
ccd8ec
     
ccd8ec
     
ccd8ec
                  ResourceName="CannotUseSelfContainedWithoutAppHost" />
ccd8ec
diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
ccd8ec
index 73a182102d1..b7eee4dfe3d 100644
ccd8ec
--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
ccd8ec
+++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.props
ccd8ec
@@ -116,6 +116,8 @@ Copyright (c) .NET Foundation. All rights reserved.
ccd8ec
     <MSBuildCopyContentTransitively Condition="'$(MSBuildCopyContentTransitively)' == ''">true</MSBuildCopyContentTransitively>
ccd8ec
     <ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts Condition="'$(ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts)' == ''">true</ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts>
ccd8ec
 
ccd8ec
+    <PublishAotSupported>false</PublishAotSupported>
ccd8ec
+    <PublishAotSupported Condition="Exists('$(MSBuildThisFileDirectory)../../Microsoft.DotNet.ILCompiler')">true</PublishAotSupported>
ccd8ec
     
ccd8ec
     
ccd8ec
   </PropertyGroup>
ccd8ec
@@ -151,7 +153,7 @@ Copyright (c) .NET Foundation. All rights reserved.
ccd8ec
   <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.CSharp.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
ccd8ec
   <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.VisualBasic.props" Condition="'$(MSBuildProjectExtension)' == '.vbproj'" />
ccd8ec
   <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.FSharp.props" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
ccd8ec
-  <Import Project="Sdk.props" Sdk="Microsoft.DotNet.ILCompiler" />
ccd8ec
+  <Import Project="Sdk.props" Sdk="Microsoft.DotNet.ILCompiler"  Condition="'$(PublishAotSupported)' == 'true'" />
ccd8ec
   <Import Project="Sdk.props" Sdk="Microsoft.NET.ILLink.Tasks" />
ccd8ec
 
ccd8ec
   <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackTool.props" />
ccd8ec
diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets
ccd8ec
index 4311ec0ecea..1f80ab9ded0 100644
ccd8ec
--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets
ccd8ec
+++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets
ccd8ec
@@ -1175,7 +1175,7 @@ Copyright (c) .NET Foundation. All rights reserved.
ccd8ec
   <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.CSharp.targets" Condition="'$(Language)' == 'C#'" />
ccd8ec
   <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.VisualBasic.targets" Condition="'$(Language)' == 'VB'" />
ccd8ec
   <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.FSharp.targets" Condition="'$(Language)' == 'F#'" />
ccd8ec
-  <Import Project="$(ILCompilerTargetsPath)" Condition="'$(PublishAot)' == 'true'"/>
ccd8ec
+  <Import Project="$(ILCompilerTargetsPath)" Condition="'$(PublishAot)' == 'true' and '$(PublishAotSupported)' == 'true'"/>
ccd8ec
   <Import Project="$(ILLinkTargetsPath)" Condition="'$(Language)' != 'C++'" />
ccd8ec
   <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.Analyzers.targets" Condition="'$(Language)' == 'C#' or '$(Language)' == 'VB'" />
ccd8ec
 
ccd8ec
diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets
ccd8ec
index a943e6615bf..8593957f3d6 100644
ccd8ec
--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets
ccd8ec
+++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets
ccd8ec
@@ -111,6 +111,8 @@ Copyright (c) .NET Foundation. All rights reserved.
ccd8ec
                             '$(EnableCompressionInSingleFile)' == 'true' And
ccd8ec
                             '$(SelfContained)' != 'true'"
ccd8ec
                  ResourceName="CompressionInSingleFileRequiresSelfContained" />
ccd8ec
+    
ccd8ec
+                ResourceName="AotNotSupported" />
ccd8ec
 
ccd8ec
     
ccd8ec
     
ccd8ec
diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
ccd8ec
index 72d10f518af..84b21ee0dd8 100644
ccd8ec
--- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
ccd8ec
+++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.RuntimeIdentifierInference.targets
ccd8ec
@@ -178,9 +178,6 @@ Copyright (c) .NET Foundation. All rights reserved.
ccd8ec
                 ResourceName="ImplicitRuntimeIdentifierResolutionForPublishPropertyFailed"
ccd8ec
                 FormatArguments="PublishAot"/>
ccd8ec
 
ccd8ec
-    
ccd8ec
-                ResourceName="AotNotSupported" />
ccd8ec
-
ccd8ec
     
ccd8ec
     
ccd8ec
                  ResourceName="CannotUseSelfContainedWithoutAppHost" />