diff --git a/src/Layout/redist/targets/GenerateBundledVersions.targets b/src/Layout/redist/targets/GenerateBundledVersions.targets
index 9237525dec17..8db9f625c7a9 100644
--- a/src/Layout/redist/targets/GenerateBundledVersions.targets
+++ b/src/Layout/redist/targets/GenerateBundledVersions.targets
@@ -1317,7 +1317,20 @@ Copyright (c) .NET Foundation. All rights reserved.
TargetingPackVersion="$(NETStandardLibraryRefPackageVersion)"
/>
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Tasks/Common/Resources/Strings.resx b/src/Tasks/Common/Resources/Strings.resx
index 46d7589727a5..29f30cddfaf0 100644
--- a/src/Tasks/Common/Resources/Strings.resx
+++ b/src/Tasks/Common/Resources/Strings.resx
@@ -995,4 +995,8 @@ You may need to build the project on another operating system or architecture, o
NETSDK1228: This project depends on the Aspire Workload which has been deprecated. Aspire now ships via NuGet packages and no longer requires a workload. Please visit {0} for upgrade guidance.{StrBegins="NETSDK1228: "}
-
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+
+
\ No newline at end of file
diff --git a/src/Tasks/Common/Resources/xlf/Strings.cs.xlf b/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
index e5db44587134..87fb9f9eaab1 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.cs.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: Projekt(y) několika řešení obsahuj(e/í) konfliktní hodnoty „{0}“; ujistěte se, že se hodnoty shodují. Zvažte použití souboru Directory.build.props k nastavení vlastnosti pro všechny projekty. Konfliktní projekty:
+ NETSDK1197: Projekt(y) několika řešení obsahuj(e/í) konfliktní hodnoty „{0}“; ujistěte se, že se hodnoty shodují. Zvažte použití souboru Directory.build.props k nastavení vlastnosti pro všechny projekty. Konfliktní projekty:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: K sestavování desktopových aplikací pro Windows se vyžaduje Microsoft.NET.Sdk.WindowsDesktop. Aktuální verze sady SDK nepodporuje hodnoty UseWpf a UseWindowsForms.{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: Používáte verzi Preview rozhraní .NET. Viz: https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.de.xlf b/src/Tasks/Common/Resources/xlf/Strings.de.xlf
index c246782b9f1c..13db3b66ad80 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.de.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.de.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: Mehrere Projektmappenprojekte enthalten widersprüchliche Werte für "{0}". Stellen Sie sicher, dass die Werte übereinstimmen. Erwägen Sie die Verwendung einer Directory.build.props-Datei, um die Eigenschaft für alle Projekte festzulegen. In Konflikt stehende Projekte:
+ NETSDK1197: Mehrere Projektmappenprojekte enthalten widersprüchliche Werte für "{0}". Stellen Sie sicher, dass die Werte übereinstimmen. Erwägen Sie die Verwendung einer Directory.build.props-Datei, um die Eigenschaft für alle Projekte festzulegen. In Konflikt stehende Projekte:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: Für das Erstellen von Windows-Desktopanwendungen ist Microsoft.NET.Sdk.WindowsDesktop erforderlich. "UseWpf" und "UseWindowsForms" werden vom aktuellen SDK nicht unterstützt.{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: Sie verwenden eine Vorschauversion von .NET. Weitere Informationen: https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.es.xlf b/src/Tasks/Common/Resources/xlf/Strings.es.xlf
index 0bf7f4613d62..2ef55a2566fc 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.es.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.es.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: Varios proyectos de solución que contienen valores '{0}' en conflicto; asegúrese de que los valores coinciden. Considere la posibilidad de usar un archivo Directory.build.props para establecer la propiedad para todos los proyectos. Proyectos en conflicto:
+ NETSDK1197: Varios proyectos de solución que contienen valores '{0}' en conflicto; asegúrese de que los valores coinciden. Considere la posibilidad de usar un archivo Directory.build.props para establecer la propiedad para todos los proyectos. Proyectos en conflicto:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: Se requiere Microsoft.NET.Sdk.WindowsDesktop para compilar las aplicaciones de escritorio de Windows. El SDK actual no admite "UseWpf" ni "UseWindowsForms".{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: Está usando una versión preliminar de .NET. Visite: https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.fr.xlf b/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
index d3f640ff0d76..0b448657cef0 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.fr.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: plusieurs projets de solution contiennent des valeurs '{0}' en conflit ; assurez-vous que les valeurs correspondent. Envisagez d'utiliser un fichier Directory.build.props pour définir la propriété pour tous les projets. Projets conflictuels :
+ NETSDK1197: plusieurs projets de solution contiennent des valeurs '{0}' en conflit ; assurez-vous que les valeurs correspondent. Envisagez d'utiliser un fichier Directory.build.props pour définir la propriété pour tous les projets. Projets conflictuels :
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: vous devez disposer de Microsoft.NET.Sdk.WindowsDesktop pour générer des applications de bureau Windows. 'UseWpf' et 'UseWindowsForms' ne sont pas pris en charge par le kit SDK actuel.{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: vous utilisez une version d'aperçu de .NET. Voir : https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.it.xlf b/src/Tasks/Common/Resources/xlf/Strings.it.xlf
index 6ac472c5fc66..79488754fa36 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.it.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.it.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: più progetti della soluzione contengono valori '{0}' in conflitto. Verificare che i valori corrispondano. Provare a usare un file Directory.build.props per impostare la proprietà di tutti i progetti. Progetti in conflitto:
+ NETSDK1197: più progetti della soluzione contengono valori '{0}' in conflitto. Verificare che i valori corrispondano. Provare a usare un file Directory.build.props per impostare la proprietà di tutti i progetti. Progetti in conflitto:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: per compilare applicazioni desktop di Windows, è necessario Microsoft.NET.Sdk.WindowsDesktop. 'UseWpf' e 'UseWindowsForms' non sono supportati dall'SDK corrente.{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: si sta usando una versione in anteprima di .NET. Vedere https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.ja.xlf b/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
index bb47aae43458..343228fa2bc9 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.ja.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: 複数のソリューションのプロジェクトに、競合する '{0}' 値が含まれています。値が一致するようにしてください。Directory.build.props ファイルを使用して、すべてのプロジェクトのプロパティを設定することを検討してください。競合するプロジェクト:
+ NETSDK1197: 複数のソリューションのプロジェクトに、競合する '{0}' 値が含まれています。値が一致するようにしてください。Directory.build.props ファイルを使用して、すべてのプロジェクトのプロパティを設定することを検討してください。競合するプロジェクト:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: Windows デスクトップ アプリケーションを作成するには、Microsoft.NET.Sdk.WindowsDesktop が必要です。現在の SDK では、'UseWpf' と 'UseWindowsForms' はサポートされていません。{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: プレビュー版の .NET を使用しています。https://aka.ms/dotnet-support-policy をご覧ください
diff --git a/src/Tasks/Common/Resources/xlf/Strings.ko.xlf b/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
index b73e728c7177..c4ba90428660 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.ko.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: 여러 솔루션 프로젝트에 충돌하는 '{0}' 값이 있습니다. 값이 일치하는지 확인하세요. Directory.build.props 파일을 사용하여 모든 프로젝트에 대한 속성을 설정하는 것이 좋습니다. 충돌하는 프로젝트:
+ NETSDK1197: 여러 솔루션 프로젝트에 충돌하는 '{0}' 값이 있습니다. 값이 일치하는지 확인하세요. Directory.build.props 파일을 사용하여 모든 프로젝트에 대한 속성을 설정하는 것이 좋습니다. 충돌하는 프로젝트:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: Microsoft.NET.Sdk.WindowsDesktop을 사용하려면 Windows 데스크톱 애플리케이션을 빌드해야 합니다. 'UseWpf' 및 'UseWindowsForms'는 현재 SDK에서 지원하지 않습니다.{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: .NET의 미리 보기 버전을 사용하고 있습니다. 참조: https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.pl.xlf b/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
index 2ab598421867..2c6e696d798c 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.pl.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: Wiele projektów rozwiązań zawiera wartości „{0}” powodujące konflikt; upewnij się, że wartości są zgodne. Rozważ użycie pliku Directory.build.props na potrzeby ustawienia właściwości dla wszystkich projektów. Projekty powodujące konflikt:
+ NETSDK1197: Wiele projektów rozwiązań zawiera wartości „{0}” powodujące konflikt; upewnij się, że wartości są zgodne. Rozważ użycie pliku Directory.build.props na potrzeby ustawienia właściwości dla wszystkich projektów. Projekty powodujące konflikt:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: Do kompilowania aplikacji klasycznych systemu Windows konieczny jest zestaw Microsoft.NET.Sdk.WindowsDesktop. Właściwości „UseWpf” i „UseWindowsForms” nie są obsługiwane przez bieżący zestaw SDK.{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: Korzystasz z wersji zapoznawczej platformy .NET. Zobacz: ttps://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf b/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
index 1932439c9340..7d04fc0bb7a2 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.pt-BR.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: Vários projetos de solução contêm valores '{0}' conflitantes; garantir que os valores correspondam. Considere usar um arquivo Directory.build.props para configurar a propriedade para todos os projetos. Projetos conflitantes:
+ NETSDK1197: Vários projetos de solução contêm valores '{0}' conflitantes; garantir que os valores correspondam. Considere usar um arquivo Directory.build.props para configurar a propriedade para todos os projetos. Projetos conflitantes:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: Microsoft.NET.Sdk.WindowsDesktop é necessário para compilar aplicativos da área de trabalho do Windows. Não há suporte para 'UseWpf' e 'UseWindowsForms' no SDK atual.{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: Você está usando uma versão de visualização do .NET. Veja: https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.ru.xlf b/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
index f8a1ae31c21f..f84dd5880230 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.ru.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: несколько проектов решения содержат конфликтующие значения "{0}". Убедитесь, что значения совпадают. Рассмотрите возможность использования файла Directory.build.props для настройки свойства для всех проектов. Конфликтующие проекты:
+ NETSDK1197: несколько проектов решения содержат конфликтующие значения "{0}". Убедитесь, что значения совпадают. Рассмотрите возможность использования файла Directory.build.props для настройки свойства для всех проектов. Конфликтующие проекты:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: для сборки классических приложений для Windows требуется Microsoft.NET.Sdk.WindowsDesktop. "UseWpf" и "UseWindowsForms" не поддерживаются текущим пакетом SDK.{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: Вы используете предварительную версию .NET. Дополнительные сведения см. на странице https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.tr.xlf b/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
index 9e0915877476..4ee9ecf510f5 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.tr.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: Birden çok çözüm projesi çakışan '{0}' değerleri içeriyor; değerlerin eşleştiğinden emin olun. Özelliği tüm projeler için ayarlamak için Directory.build.props dosyası kullanabilirsiniz. Çakışan projeler:
+ NETSDK1197: Birden çok çözüm projesi çakışan '{0}' değerleri içeriyor; değerlerin eşleştiğinden emin olun. Özelliği tüm projeler için ayarlamak için Directory.build.props dosyası kullanabilirsiniz. Çakışan projeler:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: Windows Masaüstü uygulamalarını derlemek için Microsoft.NET.Sdk.WindowsDesktop gereklidir. 'UseWpf' ve 'UseWindowsForms' geçerli SDK tarafından desteklenmiyor.{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: Bir .NET önizleme sürümü kullanıyorsunuz. Bkz. https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf b/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
index 1b093b67114d..7bb3fc2b1645 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.zh-Hans.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: 多个解决方案项目包含存在冲突的“{0}”值;请确保值能够匹配。请考虑使用 Directory.build.props 文件设置所有项目的属性。存在冲突的项目:
+ NETSDK1197: 多个解决方案项目包含存在冲突的“{0}”值;请确保值能够匹配。请考虑使用 Directory.build.props 文件设置所有项目的属性。存在冲突的项目:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: 要构建 Windows 桌面应用程序,需使用 Microsoft.NET.Sdk.WindowsDesktop。当前 SDK 不支持 "UseWpf" 和 "UseWindowsForms"。{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: 你正在使用 .NET 的预览版。请参阅 https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf b/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
index a22286f247f4..9aa913f6a506 100644
--- a/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
+++ b/src/Tasks/Common/Resources/xlf/Strings.zh-Hant.xlf
@@ -904,7 +904,7 @@ The following are names of parameters or literal values and should not be transl
NETSDK1197: Multiple solution project(s) contain conflicting '{0}' values; ensure the values match. Consider using a Directory.build.props file to set the property for all projects. Conflicting projects:
{1}
- NETSDK1197: 多個解決方案專案包含衝突的 '{0}' 值; 請確保值相符。考慮使用 Directory.build.props 檔案來設定所有專案的屬性。衝突的專案:
+ NETSDK1197: 多個解決方案專案包含衝突的 '{0}' 值; 請確保值相符。考慮使用 Directory.build.props 檔案來設定所有專案的屬性。衝突的專案:
{1}{StrBegins="NETSDK1197: "}
@@ -1043,6 +1043,11 @@ The following are names of parameters or literal values and should not be transl
NETSDK1107: 需有 Microsoft.NET.Sdk.WindowsDesktop 才能建置 Windows 傳統型應用程式。目前的 SDK 不支援 'UseWpf' 和 'UseWindowsForms'。{StrBegins="NETSDK1107: "}
+
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ NETSDK1229: Targeting a Windows SDK version with '1' as the revision number will reference CsWinRT 3.0, which is currently in preview. The current project is targeting the Windows SDK version '{0}'. If this is not intended, change the revision number to '0' to use CsWinRT 2.x instead.
+ {StrBegins="NETSDK1229: "}
+ NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policyNETSDK1057: 您目前使用的是 .NET 預覽版。請參閱: https://aka.ms/dotnet-support-policy
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs b/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs
index 17138555aed9..a397b6b18b55 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/CreateWindowsSdkKnownFrameworkReferences.cs
@@ -19,6 +19,8 @@ public class CreateWindowsSdkKnownFrameworkReferences : TaskBase
public string WindowsSdkPackageVersion { get; set; }
+ public string WindowsSdkPackageMinimumRevision { get; set; }
+
public string TargetFrameworkIdentifier { get; set; }
public string TargetFrameworkVersion { get; set; }
@@ -81,6 +83,17 @@ protected override void ExecuteCore()
knownFrameworkReferencesByWindowsSdkVersion[windowsSdkVersionParsed] = new();
}
+ if (!string.IsNullOrEmpty(WindowsSdkPackageMinimumRevision) &&
+ Version.TryParse(windowsSdkPackageVersion, out var windowsSdkPackageVersionParsed) &&
+ int.TryParse(WindowsSdkPackageMinimumRevision, out var minimumWindowsSdkRevision))
+ {
+ if (windowsSdkPackageVersionParsed.Revision < minimumWindowsSdkRevision)
+ {
+ windowsSdkPackageVersionParsed = new Version(windowsSdkPackageVersionParsed.Major, windowsSdkPackageVersionParsed.Minor, windowsSdkPackageVersionParsed.Build, minimumWindowsSdkRevision);
+ windowsSdkPackageVersion = windowsSdkPackageVersionParsed.ToString();
+ }
+ }
+
knownFrameworkReferencesByWindowsSdkVersion[windowsSdkVersionParsed].Add((normalizedMinimumVersion, CreateKnownFrameworkReferences(windowsSdkPackageVersion, TargetFrameworkVersion, supportedWindowsVersion.ItemSpec)));
}
}
@@ -99,10 +112,11 @@ protected override void ExecuteCore()
private static TaskItem[] CreateKnownFrameworkReferences(string windowsSdkPackageVersion, string targetFrameworkVersion, string targetPlatformVersion)
{
- // Return three items:
+ // Return multiple items for different profiles:
// - No profile: with the entire Windows SDK (including Windows.UI.Xaml.* types), only used by downlevel .NET SDKs
// - "Windows": just the Windows SDK, without anything in Windows.UI.Xaml.* .dll
// - "Xaml": just the Windows.UI.Xaml types
+ // - "CsWinRT3.Windows" and "CsWinRT3.Xaml": these profiles use the CSWinRT projections
//
// Note: we still need to return the item with no profile even if unused, so that the filtering logic for profiles will work correctly.
return
@@ -110,6 +124,8 @@ private static TaskItem[] CreateKnownFrameworkReferences(string windowsSdkPackag
CreateKnownFrameworkReference(windowsSdkPackageVersion, targetFrameworkVersion, targetPlatformVersion, profile: null),
CreateKnownFrameworkReference(windowsSdkPackageVersion, targetFrameworkVersion, targetPlatformVersion, profile: "Windows"),
CreateKnownFrameworkReference(windowsSdkPackageVersion, targetFrameworkVersion, targetPlatformVersion, profile: "Xaml"),
+ CreateKnownFrameworkReference(windowsSdkPackageVersion, targetFrameworkVersion, targetPlatformVersion, profile: "CsWinRT3.Windows"),
+ CreateKnownFrameworkReference(windowsSdkPackageVersion, targetFrameworkVersion, targetPlatformVersion, profile: "CsWinRT3.Xaml"),
];
}
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/ResolveRuntimePackAssets.cs b/src/Tasks/Microsoft.NET.Build.Tasks/ResolveRuntimePackAssets.cs
index 6e175381569b..317f0f217c08 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/ResolveRuntimePackAssets.cs
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/ResolveRuntimePackAssets.cs
@@ -92,6 +92,16 @@ protected override void ExecuteCore()
{
profiles.Add("Xaml");
}
+
+ if (FrameworkReferences?.Any(fxReference => fxReference.ItemSpec == "Microsoft.Windows.SDK.NET.Ref.CsWinRT3.Windows") == true)
+ {
+ profiles.Add("CsWinRT3.Windows");
+ }
+
+ if (FrameworkReferences?.Any(fxReference => fxReference.ItemSpec == "Microsoft.Windows.SDK.NET.Ref.CsWinRT3.Xaml") == true)
+ {
+ profiles.Add("CsWinRT3.Xaml");
+ }
}
// If we have a runtime framework with an empty profile, it means that we should use all of the contents of the runtime pack,
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.BeforeCommon.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.BeforeCommon.targets
index 0b94c1b0cbb5..03551d1f1440 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.BeforeCommon.targets
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.BeforeCommon.targets
@@ -205,12 +205,21 @@ Copyright (c) .NET Foundation. All rights reserved.
Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and '$(TargetPlatformIdentifier)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) " >
<_PlatformIdentifierForImplicitDefine>$(TargetPlatformIdentifier.ToUpperInvariant())
- <_PlatformVersionForImplicitDefine>$(TargetPlatformVersion.Replace('.', '_'))
+ <_PlatformVersionForImplicitDefine>$(EffectiveTargetPlatformVersion.Replace('.', '_'))
<_ImplicitDefineConstant Include="$(_PlatformIdentifierForImplicitDefine)" />
<_ImplicitDefineConstant Include="$(_PlatformIdentifierForImplicitDefine)$(_PlatformVersionForImplicitDefine)" />
+
+
+
+ <_ImplicitDefineConstant Include="CSWINRT3_0" />
+
@@ -234,7 +243,15 @@ Copyright (c) .NET Foundation. All rights reserved.
- <_SupportedPlatformCompatibleVersions Include="@(SdkSupportedTargetPlatformVersion)" Condition=" %(Identity) != '' and $([MSBuild]::VersionLessThanOrEquals(%(Identity), $(TargetPlatformVersion))) " />
+
+ <_SupportedPlatformCompatibleVersions Include="@(SdkSupportedTargetPlatformVersion)"
+ Condition=" %(Identity) != '' and '%(SdkSupportedTargetPlatformVersion.NormalizedSupportedTargetPlatformVersion)' == '' and $([MSBuild]::VersionLessThanOrEquals(%(Identity), $(TargetPlatformVersion))) " />
+ <_SupportedPlatformCompatibleVersions Include="@(SdkSupportedTargetPlatformVersion->'%(NormalizedSupportedTargetPlatformVersion)')"
+ Condition=" '%(SdkSupportedTargetPlatformVersion.NormalizedSupportedTargetPlatformVersion)' != '' and $([MSBuild]::VersionLessThanOrEquals('%(SdkSupportedTargetPlatformVersion.NormalizedSupportedTargetPlatformVersion)', $(TargetPlatformVersion))) " />
<_ImplicitDefineConstant Include="@(_SupportedPlatformCompatibleVersions->Distinct()->'$(TargetPlatformIdentifier.ToUpper())%(Identity)_OR_GREATER'->Replace('.', '_'))" />
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets
index bbcb524d8783..f3afef69fd8a 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets
@@ -40,6 +40,7 @@ Copyright (c) .NET Foundation. All rights reserved.
$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKDisplayName($(TargetPlatformIdentifier), $(TargetPlatformVersion)))
+
+
+ $(TargetPlatformVersion)
+
+
- $(TargetPlatformVersion)
+ $(EffectiveTargetPlatformVersion)
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets
index 07e579f5f38e..08e5f714b4f6 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.TargetFrameworkInference.targets
@@ -65,8 +65,21 @@ Copyright (c) .NET Foundation. All rights reserved.
$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)'))$([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 4))
+
+
+ <_TargetPlatformVersionUsesCsWinRT3>false
+ <_TargetPlatformVersionUsesCsWinRT3 Condition="'$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' != '' and $([System.Version]::Parse('$(TargetPlatformVersion)').Revision) == 1">true
+ $([System.Version]::Parse('$(TargetPlatformVersion)').Major).$([System.Version]::Parse('$(TargetPlatformVersion)').Minor).$([System.Version]::Parse('$(TargetPlatformVersion)').Build).0
+
$([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 2))
+ $(TargetPlatformVersion)Windows
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Windows.props b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Windows.props
index ddd1c2e84097..d3e75b1f4c78 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Windows.props
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Windows.props
@@ -12,7 +12,10 @@ Copyright (c) .NET Foundation. All rights reserved.
-
+
+
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Windows.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Windows.targets
index 85c07b37e009..19f9cdcf9a65 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Windows.targets
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Windows.targets
@@ -29,9 +29,25 @@ Copyright (c) .NET Foundation. All rights reserved.
true
+
+
+
+ <_TargetPlatformVersionUsesCsWinRT3 Condition="$([System.Version]::Parse('$(TargetPlatformVersion)').Revision) == 1">true
+ $([System.Version]::Parse('$(TargetPlatformVersion)').Major).$([System.Version]::Parse('$(TargetPlatformVersion)').Minor).$([System.Version]::Parse('$(TargetPlatformVersion)').Build).0
+ $(TargetPlatformVersion)
+
+
7.0
+ $(TargetPlatformVersion)
@@ -40,9 +56,9 @@ Copyright (c) .NET Foundation. All rights reserved.
$(TargetPlatformMinVersion)$(SupportedOSPlatformVersion)
-
- $(TargetPlatformVersion)
- $(TargetPlatformVersion)
+
+ $(EffectiveTargetPlatformVersion)
+ $(EffectiveTargetPlatformVersion)
@@ -66,8 +82,12 @@ Copyright (c) .NET Foundation. All rights reserved.
-
-
+
+
+
+
+
+
+
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props
index 34439118b427..0a33b09d81f8 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props
@@ -22,7 +22,12 @@ Copyright (c) .NET Foundation. All rights reserved.
-
-
+
+
+ <_NormalizedWindowsSdkSupportedTargetPlatformVersion Include="@(WindowsSdkSupportedTargetPlatformVersion)">
+ $([System.Version]::Parse('%(Identity)').Major).$([System.Version]::Parse('%(Identity)').Minor).$([System.Version]::Parse('%(Identity)').Build).0
+
+
diff --git a/test/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs b/test/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs
index 9f2d59cbab70..39a8fb83130e 100644
--- a/test/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs
+++ b/test/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildAWindowsDesktopProject.cs
@@ -478,6 +478,137 @@ public void ItDoesNotWarnAnymoreWhenBuildingAProjectWithUseUwpProperty()
.NotHaveStdOutContaining("NETSDK1219");
}
+ [WindowsOnlyFact]
+ public void ItWarnsWhenBuildingAProjectTargetingCsWinRT3_0()
+ {
+ TestProject testProject = new()
+ {
+ Name = "A",
+ ProjectSdk = "Microsoft.NET.Sdk",
+ TargetFrameworks = "net10.0-windows10.0.22621.1"
+ };
+ // Disabling until CsWinRTGen is available.
+ testProject.AdditionalProperties["CsWinRTGenerateInteropAssembly"] = "false";
+
+ var testAsset = _testAssetsManager.CreateTestProject(testProject);
+
+ var buildCommand = new BuildCommand(testAsset);
+ buildCommand.Execute()
+ .Should()
+ .Pass()
+ .And
+ .HaveStdOutContaining("NETSDK1229");
+ }
+
+ [WindowsOnlyFact]
+ public void ItImplicitlyDefinesCSWINRT3_0WhenBuildingAProjectTargetingCsWinRT3_0()
+ {
+ TestProject testProject = new()
+ {
+ Name = "A",
+ ProjectSdk = "Microsoft.NET.Sdk",
+ TargetFrameworks = "net10.0-windows10.0.22621.1",
+ SourceFiles =
+ {
+ ["Program.cs"] = """
+ #if !CSWINRT3_0
+ #error CSWINRT3_0 is not defined
+ #endif
+ """
+ }
+ };
+ // Disabling until CsWinRTGen is available.
+ testProject.AdditionalProperties["CsWinRTGenerateInteropAssembly"] = "false";
+
+ var testAsset = _testAssetsManager.CreateTestProject(testProject);
+
+ var buildCommand = new BuildCommand(testAsset);
+ buildCommand.Execute()
+ .Should()
+ .Pass();
+ }
+
+ [WindowsOnlyFact]
+ public void ItDoesNotImplicitlyDefineCSWINRT3_0WhenBuildingAProjectNotTargetingCsWinRT3_0()
+ {
+ TestProject testProject = new()
+ {
+ Name = "A",
+ ProjectSdk = "Microsoft.NET.Sdk",
+ TargetFrameworks = "net10.0-windows10.0.22621.0",
+ SourceFiles =
+ {
+ ["Program.cs"] = """
+ #if CSWINRT3_0
+ #error CSWINRT3_0 is defined
+ #endif
+ """
+ }
+ };
+
+ var testAsset = _testAssetsManager.CreateTestProject(testProject);
+
+ var buildCommand = new BuildCommand(testAsset);
+ buildCommand.Execute()
+ .Should()
+ .Pass();
+ }
+
+ [WindowsOnlyFact]
+ public void ItNormalizesWindowsSDKImplicitDefinesWhenBuildingAProjectTargetingCsWinRT3_0()
+ {
+ TestProject testProject = new()
+ {
+ Name = "A",
+ ProjectSdk = "Microsoft.NET.Sdk",
+ TargetFrameworks = "net10.0-windows10.0.22621.1",
+ SourceFiles =
+ {
+ ["Program.cs"] = """
+ #if !WINDOWS10_0_22621_0 || !WINDOWS10_0_22621_0_OR_GREATER || WINDOWS10_0_22621_1 || WINDOWS10_0_22621_1_OR_GREATER
+ #error Incorrect Windows SDK implicit defines
+ #endif
+ """
+ }
+ };
+ // Disabling until CsWinRTGen is available.
+ testProject.AdditionalProperties["CsWinRTGenerateInteropAssembly"] = "false";
+
+
+ var testAsset = _testAssetsManager.CreateTestProject(testProject);
+
+ var buildCommand = new BuildCommand(testAsset);
+ buildCommand.Execute()
+ .Should()
+ .Pass();
+ }
+
+ [WindowsOnlyFact]
+ public void ItHasExpectedWindowsSDKImplicitDefinesWhenBuildingAProjectTargetingCsWinRT2_0()
+ {
+ TestProject testProject = new()
+ {
+ Name = "A",
+ ProjectSdk = "Microsoft.NET.Sdk",
+ TargetFrameworks = "net10.0-windows10.0.22621.0",
+ SourceFiles =
+ {
+ ["Program.cs"] = """
+ #if !WINDOWS10_0_22621_0 || !WINDOWS10_0_22621_0_OR_GREATER || WINDOWS10_0_22621_1 || WINDOWS10_0_22621_1_OR_GREATER
+ #error Incorrect Windows SDK implicit defines
+ #endif
+ """
+ }
+ };
+
+ var testAsset = _testAssetsManager.CreateTestProject(testProject);
+
+ var buildCommand = new BuildCommand(testAsset);
+ buildCommand.Execute()
+ .Should()
+ .Pass();
+ }
+
[WindowsOnlyFact]
public void ItErrorsWhenTargetingBelowNet6WithUseUwpProperty()
{
@@ -625,6 +756,26 @@ public void ItHandlesProfilesWithSelfContained()
buildCommand.GetOutputDirectory().Should().HaveFile("PresentationFramework.dll");
}
+ [WindowsOnlyFact]
+ public void ItCanMultiTargetCSWinRT2And3()
+ {
+ TestProject testProject = new()
+ {
+ TargetFrameworks = $"{ToolsetInfo.CurrentTargetFramework}-windows10.0.22000.0;{ToolsetInfo.CurrentTargetFramework}-windows10.0.22000.1",
+ IsExe = true,
+ SelfContained = "true",
+ RuntimeIdentifier = "win-x64"
+ };
+ // Disabling until CsWinRTGen is available.
+ testProject.AdditionalProperties["CsWinRTGenerateInteropAssembly"] = "false";
+
+ var testAsset = _testAssetsManager.CreateTestProject(testProject);
+
+ var buildCommand = new BuildCommand(testAsset);
+ buildCommand.Execute().Should().Pass();
+
+ }
+
private string GetReferencedWindowsSdkVersion(TestAsset testAsset)
{
var getValueCommand = new GetValuesCommand(testAsset, "PackageDownload", GetValuesCommand.ValueType.Item)