diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/dotnetcli.host.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/dotnetcli.host.json index 897cc41741..9c853513c3 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/dotnetcli.host.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/dotnetcli.host.json @@ -1,5 +1,5 @@ { - "$schema": "http://json.schemastore.org/dotnetcli.host", + "$schema": "https://json.schemastore.org/dotnetcli.host", "symbolInfo": { "skipRestore": { "longName": "no-restore", diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.cs.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.cs.json index 02df608ea3..d4e60b16fe 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.cs.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.cs.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Webová aplikace Fluent Blazor", "description": "Šablona projektu pro vytvoření webové aplikace Blazor, která podporuje vykreslování na straně serveru i interaktivitu klienta. Tato šablona se dá použít pro webové aplikace s bohatými dynamickými uživatelskými rozhraními (UI).", "symbols/Framework/description": "Cílová architektura pro projekt", - "symbols/Framework/choices/net8.0/description": "Cílový net8.0", + "symbols/Framework/choices/net9.0/description": "Cílový net9.0", "symbols/UserSecretsId/description": "ID, které se má použít pro tajné kódy (používá se s individuálním ověřováním).", "symbols/skipRestore/description": "Pokud se tato možnost zadá, přeskočí automatické obnovení projektu při vytvoření.", "symbols/ExcludeLaunchSettings/description": "Určuje, jestli se má z vygenerované šablony vyloučit soubor launchSettings.json.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Určuje, jestli se má místo příkazů nejvyšší úrovně generovat explicitní třída Program a metoda Main.", "postActions/restore/description": "Obnoví balíčky NuGet vyžadované tímto projektem.", "postActions/restore/manualInstructions/default/text": "Spustit dotnet restore" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.de.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.de.json index 3fc3699744..73b431962a 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.de.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.de.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor Web App", "description": "Eine Projektvorlage zum Erstellen einer Blazor-Web-App, die sowohl serverseitiges Rendering als auch Clientinteraktivität unterstützt. Diese Vorlage kann für Web-Apps mit umfangreichen dynamischen Benutzeroberflächen (UIs) verwendet werden.", "symbols/Framework/description": "Das Zielframework für das Projekt.", - "symbols/Framework/choices/net8.0/description": "Ziel net8.0", + "symbols/Framework/choices/net9.0/description": "Ziel net9.0", "symbols/UserSecretsId/description": "Die für Geheimnisse zu verwendende ID (Verwendung mit individueller Authentifizierung).", "symbols/skipRestore/description": "Wenn angegeben, wird die automatische Wiederherstellung des Projekts beim Erstellen übersprungen.", "symbols/ExcludeLaunchSettings/description": "Ob launchSettings.json aus der generierten Vorlage ausgeschlossen werden soll.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Gibt an, ob anstelle von Anweisungen der obersten Ebene eine explizite Programmklasse und eine Main-Methode generiert werden soll.", "postActions/restore/description": "„NuGet-Pakete“ wiederherstellen, die für dieses Projekt erforderlich sind.", "postActions/restore/manualInstructions/default/text": "„dotnet restore“ ausführen" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.en.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.en.json index 2d363d7723..abdc9593c9 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.en.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.en.json @@ -3,7 +3,7 @@ "name": "Fluent Blazor Web App", "description": "A project template for creating a Blazor web app that supports both server-side rendering and client interactivity and uses the Fluent components library. This template can be used for web apps with rich dynamic user interfaces (UIs).", "symbols/Framework/description": "The target framework for the project.", - "symbols/Framework/choices/net8.0/description": "Target net8.0", + "symbols/Framework/choices/net9.0/description": "Target net9.0", "symbols/UserSecretsId/description": "The ID to use for secrets (use with Individual auth).", "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.", "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Whether to generate an explicit Program class and Main method instead of top-level statements.", "postActions/restore/description": "Restore NuGet packages required by this project.", "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.es.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.es.json index 5b9e9cc136..c25ba16fdb 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.es.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.es.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Aplicación web Fluent Blazor", "description": "Plantilla de proyecto para crear una aplicación web de Blazor que admita tanto la representación del lado del servidor como la interactividad del cliente. Esta plantilla se puede usar para las aplicaciones web con interfaces de usuario dinámicas enriquecidas.", "symbols/Framework/description": "Marco de destino del proyecto.", - "symbols/Framework/choices/net8.0/description": "net8.0 de destino", + "symbols/Framework/choices/net9.0/description": "net9.0 de destino", "symbols/UserSecretsId/description": "Identificador que se va a usar para los secretos (se usa con la autenticación individual).", "symbols/skipRestore/description": "Si se especifica, se omite la restauración automática del proyecto durante la creación.", "symbols/ExcludeLaunchSettings/description": "Indica si se va a excluir launchSettings.json de la plantilla generada.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Indica si se debe generar una clase Program explícita y un método Main en lugar de instrucciones de nivel superior.", "postActions/restore/description": "Restaure los paquetes NuGet necesarios para este proyecto.", "postActions/restore/manualInstructions/default/text": "Ejecutar \"dotnet restore\"" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.fr.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.fr.json index 55acae31ed..d08b5237c2 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.fr.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.fr.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Application web Fluent Blazor", "description": "Modèle de projet pour la création d’une application web Blazor qui prend en charge le rendu côté serveur et l’interactivité du client. Ce modèle peut être utilisé pour les applications web avec des interfaces utilisateur dynamiques enrichies.", "symbols/Framework/description": "Framework cible du projet.", - "symbols/Framework/choices/net8.0/description": "Cible net8.0", + "symbols/Framework/choices/net9.0/description": "Cible net9.0", "symbols/UserSecretsId/description": "ID à utiliser pour les secrets (à utiliser avec l’authentification individuelle).", "symbols/skipRestore/description": "S’il est spécifié, ignore la restauration automatique du projet lors de la création.", "symbols/ExcludeLaunchSettings/description": "Indique s’il faut exclure launchSettings.json du modèle généré.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Indique s’il faut générer une classe Programme explicite et une méthode Main au lieu d’instructions de niveau supérieur.", "postActions/restore/description": "Restaurez les packages NuGet requis par ce projet.", "postActions/restore/manualInstructions/default/text": "Exécuter « dotnet restore »" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.it.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.it.json index 9eba4cc5f3..e3c49a0087 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.it.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.it.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "App Web Fluent Blazor", "description": "Modello di progetto per la creazione di un'app Web Blazor che supporta sia il rendering lato server sia l'interattività client. Questo modello può essere usato per app Web con interfacce utente dinamiche avanzate.", "symbols/Framework/description": "Il framework di destinazione per il progetto.", - "symbols/Framework/choices/net8.0/description": "Destinazione net8.0", + "symbols/Framework/choices/net9.0/description": "Destinazione net9.0", "symbols/UserSecretsId/description": "ID da usare per i segreti (usare con l'autenticazione Individual).", "symbols/skipRestore/description": "Se specificato, ignora il ripristino automatico del progetto durante la creazione.", "symbols/ExcludeLaunchSettings/description": "Indica se escludere launchSettings.json dal modello generato.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Indica se generare una classe Program esplicita e un metodo Main anziché istruzioni di primo livello.", "postActions/restore/description": "Ripristina i pacchetti NuGet richiesti da questo progetto.", "postActions/restore/manualInstructions/default/text": "Esegui 'dotnet restore'" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ja.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ja.json index 3a2f1714b7..4daad6b54d 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ja.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ja.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor Web アプリ", "description": "サーバー側のレンダリングとクライアントの対話機能の両方をサポートする Blazor Web アプリを作成するためのプロジェクト テンプレートです。このテンプレートは、リッチな動的ユーザー インターフェイス (UI) を持つ Web アプリに使用できます。", "symbols/Framework/description": "プロジェクトのターゲット フレームワークです。", - "symbols/Framework/choices/net8.0/description": "ターゲット net8.0", + "symbols/Framework/choices/net9.0/description": "ターゲット net9.0", "symbols/UserSecretsId/description": "シークレットで使用する ID (IndividualAuth で使用)。", "symbols/skipRestore/description": "指定した場合、作成時にプロジェクトの自動復元がスキップされます。", "symbols/ExcludeLaunchSettings/description": "生成されたテンプレートから launchSettings.json を除外するかどうか。", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "最上位レベルのステートメントではなく、明示的な Program クラスと Main メソッドを生成するかどうか。", "postActions/restore/description": "このプロジェクトに必要な NuGet パッケージを復元します。", "postActions/restore/manualInstructions/default/text": "'dotnet restore' を実行する" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ko.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ko.json index c1b5a35ccd..1eee9a0da8 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ko.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ko.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor 웹앱", "description": "서버 측 렌더링 및 클라이언트 대화형 작업을 모두 지원하는 Blazor 웹앱을 만들기 위한 프로젝트 템플릿입니다. 이 템플릿은 풍부한 동적 UI(사용자 인터페이스)가 있는 웹앱에 사용할 수 있습니다.", "symbols/Framework/description": "프로젝트에 대한 대상 프레임워크입니다.", - "symbols/Framework/choices/net8.0/description": "대상 net8.0", + "symbols/Framework/choices/net9.0/description": "대상 net9.0", "symbols/UserSecretsId/description": "비밀에 사용할 ID입니다(개별 인증과 함께 사용).", "symbols/skipRestore/description": "지정된 경우, 프로젝트 생성 시 자동 복원을 건너뜁니다.", "symbols/ExcludeLaunchSettings/description": "생성된 템플릿에서 launchSettings.json을 제외할지 여부입니다.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "최상위 문 대신 명시적 Program 클래스 및 Main 메서드를 생성할지 여부입니다.", "postActions/restore/description": "이 프로젝트에 필요한 NuGet 패키지를 복원합니다.", "postActions/restore/manualInstructions/default/text": "'dotnet restore' 실행" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.pl.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.pl.json index fd317c22ab..ff79bbdf5f 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.pl.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.pl.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Aplikacja internetowa Fluent Blazor", "description": "Szablon projektu służący do tworzenia aplikacji internetowej platformy Blazor, która obsługuje renderowanie po stronie serwera i interakcyjność klienta. Ten szablon może być używany dla aplikacji internetowych z zaawansowanymi dynamicznymi interfejsami użytkownika.", "symbols/Framework/description": "Platforma docelowa dla tego projektu.", - "symbols/Framework/choices/net8.0/description": "Docelowa platforma net8.0", + "symbols/Framework/choices/net9.0/description": "Docelowa platforma net9.0", "symbols/UserSecretsId/description": "Identyfikator do użycia dla wpisów tajnych (używany z indywidualnym uwierzytelnianym).", "symbols/skipRestore/description": "Jeśli ta opcja jest określona, pomija automatyczne przywracanie projektu podczas tworzenia.", "symbols/ExcludeLaunchSettings/description": "Określa, czy wykluczyć plik launchSettings.json z wygenerowanego szablonu.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Określa, czy wygenerować jawną klasę Program i metodę Main zamiast instrukcji najwyższego poziomu.", "postActions/restore/description": "Przywróć pakiety NuGet wymagane przez ten projekt.", "postActions/restore/manualInstructions/default/text": "Uruchom polecenie \"dotnet restore\"" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.pt-BR.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.pt-BR.json index a2338e460e..86367f7417 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.pt-BR.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.pt-BR.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Aplicativo Web Fluent Blazor", "description": "Um modelo de projeto para criar um aplicativo Web Blazor que dá suporte à renderização do lado do servidor e à interatividade do cliente. Este modelo pode ser usado para aplicativos da Web com interfaces de usuário (UIs) dinâmicas avançadas.", "symbols/Framework/description": "A estrutura de destino do projeto.", - "symbols/Framework/choices/net8.0/description": "net8.0 de destino", + "symbols/Framework/choices/net9.0/description": "net9.0 de destino", "symbols/UserSecretsId/description": "O ID a ser usado para segredos (usado com autenticação individual).", "symbols/skipRestore/description": "Se especificado, ignora a restauração automática do projeto sendo criado.", "symbols/ExcludeLaunchSettings/description": "Se deve excluir launchSettings.json do modelo gerado.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Se deve gerar uma classe de Programa explícita e um método principal em vez de instruções de nível superior.", "postActions/restore/description": "Restaure os pacotes NuGet exigidos por este projeto.", "postActions/restore/manualInstructions/default/text": "Executa 'dotnet restore'" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ru.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ru.json index f85d62bfef..b1c552f666 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ru.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.ru.json @@ -1,9 +1,9 @@ -{ +{ "author": "Майкрософт", "name": "Веб-приложение Fluent Blazor", "description": "Шаблон проекта для создания приложения Blazor, поддерживающего как отрисовку на стороне сервера, так и интерактивные возможности клиента. Этот шаблон можно использовать для веб-приложений с многофункциональными динамическими пользовательскими интерфейсами (UI).", "symbols/Framework/description": "Целевая платформа для проекта.", - "symbols/Framework/choices/net8.0/description": "Целевая net8.0", + "symbols/Framework/choices/net9.0/description": "Целевая net9.0", "symbols/UserSecretsId/description": "Идентификатор, используемый для секретов (применяется с индивидуальной проверкой подлинности).", "symbols/skipRestore/description": "Если установлено, автоматическое восстановление проекта при создании пропускается.", "symbols/ExcludeLaunchSettings/description": "Следует ли исключить launchSettings.json из созданного шаблона.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Следует ли создавать явный класс Program и метод Main вместо операторов верхнего уровня.", "postActions/restore/description": "Восстановление пакетов NuGet, необходимых для этого проекта.", "postActions/restore/manualInstructions/default/text": "Выполнить команду \"dotnet restore\"" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.tr.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.tr.json index 142dfeada2..628ef40beb 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.tr.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.tr.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor Web Uygulaması", "description": "Hem sunucu tarafı işlemeyi hem de istemci etkileşimini destekleyen bir Blazor web uygulaması oluşturmaya yönelik proje şablonu. Bu şablon, zengin dinamik kullanıcı arabirimlerine (UI) sahip web uygulamaları için kullanılabilir.", "symbols/Framework/description": "Projenin hedef çerçevesi.", - "symbols/Framework/choices/net8.0/description": "Hedef net8.0", + "symbols/Framework/choices/net9.0/description": "Hedef net9.0", "symbols/UserSecretsId/description": "Gizli diziler için kullanılacak kimlik (Bireysel kimlik doğrulamayla kullanın).", "symbols/skipRestore/description": "Belirtilirse, oluşturma sırasında projenin otomatik geri yüklenmesini atlar.", "symbols/ExcludeLaunchSettings/description": "launchSettings.json öğesinin oluşturulan şablondan dışlanıp dışlanmayacağı.", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "Üst düzey deyimler yerine açık bir Program sınıfı ve Ana yöntem oluşturup oluşturulmayacağını belirtir.", "postActions/restore/description": "Bu projenin gerektirdiği NuGet paketlerini geri yükleyin.", "postActions/restore/manualInstructions/default/text": "'dotnet restore' çalıştır" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.zh-Hans.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.zh-Hans.json index 49fc41c003..20e306aa4f 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.zh-Hans.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.zh-Hans.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor Web 应用", "description": "用于创建支持服务器端呈现和客户端交互的 Blazor Web 应用的项目模板。此模板可用于具有丰富动态用户界面 (UI) 的 Web 应用。", "symbols/Framework/description": "项目的目标框架。", - "symbols/Framework/choices/net8.0/description": "目标 net8.0", + "symbols/Framework/choices/net9.0/description": "目标 net9.0", "symbols/UserSecretsId/description": "用于机密的 ID (与个人身份验证一起使用)。", "symbols/skipRestore/description": "如果指定,则在创建时跳过项目的自动还原。", "symbols/ExcludeLaunchSettings/description": "是否从生成的模板中排除 launchSettings.json。", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "是否生成显式程序类和主方法,而不是顶级语句。", "postActions/restore/description": "还原此项目所需的 NuGet 包。", "postActions/restore/manualInstructions/default/text": "运行 \"dotnet restore\"" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.zh-Hant.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.zh-Hant.json index ac5c913125..8b94a2f2c9 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.zh-Hant.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.zh-Hant.json @@ -1,9 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor Web 應用程式", "description": "用於建立同時支援伺服器端轉譯和用戶端互動的 Blazor Web 應用程式的專案範本。此範本可用於具有豐富動態使用者介面 (UI) 的 Web 應用程式。", "symbols/Framework/description": "專案的目標 Framework。", - "symbols/Framework/choices/net8.0/description": "目標 net8.0", + "symbols/Framework/choices/net9.0/description": "目標 net9.0", "symbols/UserSecretsId/description": "用於祕密的識別碼 (搭配個別驗證使用)。", "symbols/skipRestore/description": "若指定,會在建立時跳過專案的自動還原。", "symbols/ExcludeLaunchSettings/description": "是否要從產生的範本排除 launchSettings.json。", @@ -41,4 +41,4 @@ "symbols/UseProgramMain/description": "是否要產生明確的 Program 類別和 Main 方法,而非最上層語句。", "postActions/restore/description": "還原此專案所需的 NuGet 套件。", "postActions/restore/manualInstructions/default/text": "執行 'dotnet restore'" -} \ No newline at end of file +} diff --git a/src/Templates/content/BlazorWeb-CSharp/.template.config/template.json b/src/Templates/content/BlazorWeb-CSharp/.template.config/template.json index dffe42a16b..1dfb59e601 100644 --- a/src/Templates/content/BlazorWeb-CSharp/.template.config/template.json +++ b/src/Templates/content/BlazorWeb-CSharp/.template.config/template.json @@ -1,5 +1,5 @@ { - "$schema": "http://json.schemastore.org/template", + "$schema": "https://json.schemastore.org/template", "author": "Microsoft", "classifications": [ "Web", @@ -11,15 +11,15 @@ "defaultName": "BlazorApp", "description": "A project template for creating a Blazor web app that supports both server-side rendering and client interactivity. This template can be used for web apps with rich dynamic user interfaces (UIs).", "groupIdentity": "Microsoft.Web.Fluent.Blazor", - "precedence": "9801", + "precedence": "9901", "guids": [ "4C26868E-5E7C-458D-82E3-040509D0C71F", "5990939C-7E7B-4CFA-86FF-44CA5756498A", "650B3CE7-2E93-4CC4-9F46-466686815EAA", "53bc9b9d-9d6a-45d4-8429-2a2761773502" ], - "identity": "Microsoft.Web.Fluent.Blazor.CSharp.8.0", - "thirdPartyNotices": "https://aka.ms/aspnetcore/8.0-third-party-notices", + "identity": "Microsoft.Web.Fluent.Blazor.CSharp.9.0", + "thirdPartyNotices": "https://aka.ms/aspnetcore/9.0-third-party-notices", "preferNameDirectory": true, "primaryOutputs": [ { @@ -131,7 +131,6 @@ "exclude": [ "BlazorWeb-CSharp/Components/Account/**", "BlazorWeb-CSharp/Data/**", - "BlazorWeb-CSharp.Client/PersistentAuthenticationStateProvider.cs", "BlazorWeb-CSharp.Client/UserInfo.cs", "BlazorWeb-CSharp.Client/Pages/Auth.razor" ] @@ -149,23 +148,11 @@ ] }, { - "condition": "(!(IndividualLocalAuth && UseServer && UseWebAssembly))", - "exclude": [ - "BlazorWeb-CSharp/Components/Account/PersistingRevalidatingAuthenticationStateProvider.cs" - ] - }, - { - "condition": "(!(IndividualLocalAuth && UseServer && !UseWebAssembly))", + "condition": "(!(IndividualLocalAuth && UseServer))", "exclude": [ "BlazorWeb-CSharp/Components/Account/IdentityRevalidatingAuthenticationStateProvider.cs" ] }, - { - "condition": "(!(IndividualLocalAuth && !UseServer && UseWebAssembly))", - "exclude": [ - "BlazorWeb-CSharp/Components/Account/PersistingServerAuthenticationStateProvider.cs" - ] - }, { "condition": "(IndividualLocalAuth && UseLocalDB && UseWebAssembly)", "rename": { @@ -218,12 +205,12 @@ "datatype": "choice", "choices": [ { - "choice": "net8.0", - "description": "Target net8.0" + "choice": "net9.0", + "description": "Target net9.0" } ], - "replaces": "net8.0", - "defaultValue": "net8.0" + "replaces": "net9.0", + "defaultValue": "net9.0" }, "HostIdentifier": { "type": "bind", diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/BlazorWeb-CSharp.Client.csproj b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/BlazorWeb-CSharp.Client.csproj index bc83e696ea..cc440a886e 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/BlazorWeb-CSharp.Client.csproj +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/BlazorWeb-CSharp.Client.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable true @@ -11,8 +11,8 @@ - - + + diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/PersistentAuthenticationStateProvider.cs b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/PersistentAuthenticationStateProvider.cs deleted file mode 100644 index d97e09a6fc..0000000000 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/PersistentAuthenticationStateProvider.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.Security.Claims; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Authorization; - -namespace BlazorWeb_CSharp.Client; - -// This is a client-side AuthenticationStateProvider that determines the user's authentication state by -// looking for data persisted in the page when it was rendered on the server. This authentication state will -// be fixed for the lifetime of the WebAssembly application. So, if the user needs to log in or out, a full -// page reload is required. -// -// This only provides a user name and email for display purposes. It does not actually include any tokens -// that authenticate to the server when making subsequent requests. That works separately using a -// cookie that will be included on HttpClient requests to the server. -internal class PersistentAuthenticationStateProvider : AuthenticationStateProvider -{ - private static readonly Task defaultUnauthenticatedTask = - Task.FromResult(new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()))); - - private readonly Task authenticationStateTask = defaultUnauthenticatedTask; - - public PersistentAuthenticationStateProvider(PersistentComponentState state) - { - if (!state.TryTakeFromJson(nameof(UserInfo), out var userInfo) || userInfo is null) - { - return; - } - - Claim[] claims = [ - new Claim(ClaimTypes.NameIdentifier, userInfo.UserId), - new Claim(ClaimTypes.Name, userInfo.Email), - new Claim(ClaimTypes.Email, userInfo.Email) ]; - - authenticationStateTask = Task.FromResult( - new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity(claims, - authenticationType: nameof(PersistentAuthenticationStateProvider))))); - } - - public override Task GetAuthenticationStateAsync() => authenticationStateTask; -} diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.Main.cs b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.Main.cs index bc35c43451..7ed596789d 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.Main.cs +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.Main.cs @@ -1,7 +1,3 @@ -#if (IndividualLocalAuth) -using BlazorWeb_CSharp.Client; -using Microsoft.AspNetCore.Components.Authorization; -#endif using Microsoft.AspNetCore.Components.WebAssembly.Hosting; namespace BlazorWeb_CSharp.Client; @@ -12,12 +8,12 @@ static async Task Main(string[] args) { var builder = WebAssemblyHostBuilder.CreateDefault(args); -#if (IndividualLocalAuth) + #if (IndividualLocalAuth) builder.Services.AddAuthorizationCore(); builder.Services.AddCascadingAuthenticationState(); - builder.Services.AddSingleton(); + builder.Services.AddAuthenticationStateDeserialization(); -#endif + #endif await builder.Build().RunAsync(); } } diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.cs b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.cs index 1ac27bb2b1..a55e36857d 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.cs +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.cs @@ -1,7 +1,3 @@ -#if (IndividualLocalAuth) -using BlazorWeb_CSharp.Client; -using Microsoft.AspNetCore.Components.Authorization; -#endif using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.FluentUI.AspNetCore.Components; @@ -11,7 +7,7 @@ #if (IndividualLocalAuth) builder.Services.AddAuthorizationCore(); builder.Services.AddCascadingAuthenticationState(); -builder.Services.AddSingleton(); +builder.Services.AddAuthenticationStateDeserialization(); #endif await builder.Build().RunAsync(); diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/UserInfo.cs b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/UserInfo.cs deleted file mode 100644 index b62cdbbe0c..0000000000 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/UserInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace BlazorWeb_CSharp.Client; - -// Add properties to this class and update the server and client AuthenticationStateProviders -// to expose more information about the authenticated user to the client. -public class UserInfo -{ - public required string UserId { get; set; } - public required string Email { get; set; } -} diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/BlazorWeb-CSharp.csproj b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/BlazorWeb-CSharp.csproj index 76aa61ac51..b4ea53e617 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/BlazorWeb-CSharp.csproj +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/BlazorWeb-CSharp.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable aspnet-BlazorWeb-CSharp-53bc9b9d-9d6a-45d4-8429-2a2761773502 @@ -19,12 +19,12 @@ - - - - - - + + + + + + diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/IdentityComponentsEndpointRouteBuilderExtensions.cs b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/IdentityComponentsEndpointRouteBuilderExtensions.cs index d2d378a2f8..fbc7736e30 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/IdentityComponentsEndpointRouteBuilderExtensions.cs +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/IdentityComponentsEndpointRouteBuilderExtensions.cs @@ -44,7 +44,7 @@ public static IEndpointConventionBuilder MapAdditionalIdentityEndpoints(this IEn accountGroup.MapPost("/Logout", async ( ClaimsPrincipal user, - SignInManager signInManager, + [FromServices] SignInManager signInManager, [FromForm] string returnUrl) => { await signInManager.SignOutAsync(); diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ExternalLogin.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ExternalLogin.razor index e1c6cf6dbe..845de5ed8e 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ExternalLogin.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ExternalLogin.razor @@ -45,7 +45,7 @@ public const string LoginCallbackAction = "LoginCallback"; private string? message; - private ExternalLoginInfo externalLoginInfo = default!; + private ExternalLoginInfo? externalLoginInfo; [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; @@ -62,7 +62,7 @@ [SupplyParameterFromQuery] private string? Action { get; set; } - private string? ProviderDisplayName => externalLoginInfo.ProviderDisplayName; + private string? ProviderDisplayName => externalLoginInfo?.ProviderDisplayName; protected override async Task OnInitializedAsync() { @@ -95,6 +95,11 @@ private async Task OnLoginCallbackAsync() { + if (externalLoginInfo is null) + { + RedirectManager.RedirectToWithStatus("Account/Login", "Error loading external login information.", HttpContext); + } + // Sign in the user with this external login provider if the user already has a login. var result = await SignInManager.ExternalLoginSignInAsync( externalLoginInfo.LoginProvider, @@ -124,6 +129,11 @@ private async Task OnValidSubmitAsync() { + if (externalLoginInfo is null) + { + RedirectManager.RedirectToWithStatus("Account/Login", "Error loading external login information during confirmation.", HttpContext); + } + var emailStore = GetEmailStore(); var user = CreateUser(); diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ForgotPasswordConfirmation.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ForgotPasswordConfirmation.razor index 38de01d1ec..a771a3a1d4 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ForgotPasswordConfirmation.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ForgotPasswordConfirmation.razor @@ -3,6 +3,6 @@ Forgot password confirmation

Forgot password confirmation

-

+

Please check your email to reset your password.

diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/InvalidPasswordReset.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/InvalidPasswordReset.razor index 509578bbf8..561b651a4e 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/InvalidPasswordReset.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/InvalidPasswordReset.razor @@ -3,6 +3,6 @@ Invalid password reset

Invalid password reset

-

+

The password reset link is invalid.

diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/Lockout.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/Lockout.razor index a8d1e0afc7..017e31d38b 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/Lockout.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/Lockout.razor @@ -4,5 +4,5 @@

Locked out

-

This account has been locked out, please try again later.

+
diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/RegisterConfirmation.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/RegisterConfirmation.razor index 91484e46a7..ec74ea584e 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/RegisterConfirmation.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/RegisterConfirmation.razor @@ -25,7 +25,7 @@ } else { -

Please check your email to confirm your account.

+

Please check your email to confirm your account.

} @code { diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ResetPasswordConfirmation.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ResetPasswordConfirmation.razor index 7f7347dccd..247e96eca3 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ResetPasswordConfirmation.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/ResetPasswordConfirmation.razor @@ -2,6 +2,6 @@ Reset password confirmation

Reset password confirmation

-

+

Your password has been reset. Please click here to log in.

diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/_Imports.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/_Imports.razor index ea096b9c8f..ecfdacfa93 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/_Imports.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/_Imports.razor @@ -1,2 +1,2 @@ @using BlazorWeb_CSharp.Components.Account.Shared -@layout AccountLayout +@attribute [ExcludeFromInteractiveRouting] diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/PersistingRevalidatingAuthenticationStateProvider.cs b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/PersistingRevalidatingAuthenticationStateProvider.cs deleted file mode 100644 index 32439c3c53..0000000000 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/PersistingRevalidatingAuthenticationStateProvider.cs +++ /dev/null @@ -1,109 +0,0 @@ -using System.Diagnostics; -using System.Security.Claims; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Authorization; -using Microsoft.AspNetCore.Components.Server; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.Identity; -using Microsoft.Extensions.Options; -using BlazorWeb_CSharp.Client; -using BlazorWeb_CSharp.Data; - -namespace BlazorWeb_CSharp.Components.Account; - -// This is a server-side AuthenticationStateProvider that revalidates the security stamp for the connected user -// every 30 minutes an interactive circuit is connected. It also uses PersistentComponentState to flow the -// authentication state to the client which is then fixed for the lifetime of the WebAssembly application. -internal sealed class PersistingRevalidatingAuthenticationStateProvider : RevalidatingServerAuthenticationStateProvider -{ - private readonly IServiceScopeFactory scopeFactory; - private readonly PersistentComponentState state; - private readonly IdentityOptions options; - - private readonly PersistingComponentStateSubscription subscription; - - private Task? authenticationStateTask; - - public PersistingRevalidatingAuthenticationStateProvider( - ILoggerFactory loggerFactory, - IServiceScopeFactory serviceScopeFactory, - PersistentComponentState persistentComponentState, - IOptions optionsAccessor) - : base(loggerFactory) - { - scopeFactory = serviceScopeFactory; - state = persistentComponentState; - options = optionsAccessor.Value; - - AuthenticationStateChanged += OnAuthenticationStateChanged; - subscription = state.RegisterOnPersisting(OnPersistingAsync, RenderMode.InteractiveWebAssembly); - } - - protected override TimeSpan RevalidationInterval => TimeSpan.FromMinutes(30); - - protected override async Task ValidateAuthenticationStateAsync( - AuthenticationState authenticationState, CancellationToken cancellationToken) - { - // Get the user manager from a new scope to ensure it fetches fresh data - await using var scope = scopeFactory.CreateAsyncScope(); - var userManager = scope.ServiceProvider.GetRequiredService>(); - return await ValidateSecurityStampAsync(userManager, authenticationState.User); - } - - private async Task ValidateSecurityStampAsync(UserManager userManager, ClaimsPrincipal principal) - { - var user = await userManager.GetUserAsync(principal); - if (user is null) - { - return false; - } - else if (!userManager.SupportsUserSecurityStamp) - { - return true; - } - else - { - var principalStamp = principal.FindFirstValue(options.ClaimsIdentity.SecurityStampClaimType); - var userStamp = await userManager.GetSecurityStampAsync(user); - return principalStamp == userStamp; - } - } - - private void OnAuthenticationStateChanged(Task task) - { - authenticationStateTask = task; - } - - private async Task OnPersistingAsync() - { - if (authenticationStateTask is null) - { - throw new UnreachableException($"Authentication state not set in {nameof(OnPersistingAsync)}()."); - } - - var authenticationState = await authenticationStateTask; - var principal = authenticationState.User; - - if (principal.Identity?.IsAuthenticated == true) - { - var userId = principal.FindFirst(options.ClaimsIdentity.UserIdClaimType)?.Value; - var email = principal.FindFirst(options.ClaimsIdentity.EmailClaimType)?.Value; - - if (userId != null && email != null) - { - state.PersistAsJson(nameof(UserInfo), new UserInfo - { - UserId = userId, - Email = email, - }); - } - } - } - - protected override void Dispose(bool disposing) - { - subscription.Dispose(); - AuthenticationStateChanged -= OnAuthenticationStateChanged; - base.Dispose(disposing); - } -} diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/PersistingServerAuthenticationStateProvider.cs b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/PersistingServerAuthenticationStateProvider.cs deleted file mode 100644 index c7e967e77a..0000000000 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/PersistingServerAuthenticationStateProvider.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System.Diagnostics; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Authorization; -using Microsoft.AspNetCore.Components.Server; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.Identity; -using Microsoft.Extensions.Options; -using BlazorWeb_CSharp.Client; - -namespace BlazorWeb_CSharp.Components.Account; - -// This is a server-side AuthenticationStateProvider that uses PersistentComponentState to flow the -// authentication state to the client which is then fixed for the lifetime of the WebAssembly application. -internal sealed class PersistingServerAuthenticationStateProvider : ServerAuthenticationStateProvider, IDisposable -{ - private readonly PersistentComponentState state; - private readonly IdentityOptions options; - - private readonly PersistingComponentStateSubscription subscription; - - private Task? authenticationStateTask; - - public PersistingServerAuthenticationStateProvider( - PersistentComponentState persistentComponentState, - IOptions optionsAccessor) - { - state = persistentComponentState; - options = optionsAccessor.Value; - - AuthenticationStateChanged += OnAuthenticationStateChanged; - subscription = state.RegisterOnPersisting(OnPersistingAsync, RenderMode.InteractiveWebAssembly); - } - - private void OnAuthenticationStateChanged(Task task) - { - authenticationStateTask = task; - } - - private async Task OnPersistingAsync() - { - if (authenticationStateTask is null) - { - throw new UnreachableException($"Authentication state not set in {nameof(OnPersistingAsync)}()."); - } - - var authenticationState = await authenticationStateTask; - var principal = authenticationState.User; - - if (principal.Identity?.IsAuthenticated == true) - { - var userId = principal.FindFirst(options.ClaimsIdentity.UserIdClaimType)?.Value; - var email = principal.FindFirst(options.ClaimsIdentity.EmailClaimType)?.Value; - - if (userId != null && email != null) - { - state.PersistAsJson(nameof(UserInfo), new UserInfo - { - UserId = userId, - Email = email, - }); - } - } - } - - public void Dispose() - { - subscription.Dispose(); - AuthenticationStateChanged -= OnAuthenticationStateChanged; - } -} diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/AccountLayout.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/AccountLayout.razor deleted file mode 100644 index 13680eae9d..0000000000 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/AccountLayout.razor +++ /dev/null @@ -1,32 +0,0 @@ -@inherits LayoutComponentBase -@*#if (UseWebAssembly && InteractiveAtRoot) -@layout BlazorWeb_CSharp.Client.Layout.MainLayout -##else -@layout BlazorWeb_CSharp.Components.Layout.MainLayout -##endif*@ -@inject NavigationManager NavigationManager - -@if (HttpContext is null) -{ -

Loading...

-} -else -{ - @Body -} - -@code { - [CascadingParameter] - private HttpContext? HttpContext { get; set; } - - protected override void OnParametersSet() - { - if (HttpContext is null) - { - // If this code runs, we're currently rendering in interactive mode, so there is no HttpContext. - // The identity pages need to set cookies, so they require an HttpContext. To achieve this we - // must transition back from interactive mode to a server-rendered page. - NavigationManager.Refresh(forceReload: true); - } - } -} diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/ExternalLoginPicker.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/ExternalLoginPicker.razor index 9894a7efa1..d2eccce113 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/ExternalLoginPicker.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/ExternalLoginPicker.razor @@ -23,7 +23,7 @@ else

@foreach (var provider in externalLogins) { - @provider.DisplayName + @provider.DisplayName   }

diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/ManageLayout.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/ManageLayout.razor index e1f74a75de..cd9284b985 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/ManageLayout.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Shared/ManageLayout.razor @@ -1,9 +1,13 @@ @inherits LayoutComponentBase -@layout AccountLayout +@*#if (UseWebAssembly && InteractiveAtRoot) +@layout BlazorWeb_CSharp.Client.Layout.MainLayout +##else +@layout BlazorWeb_CSharp.Components.Layout.MainLayout +##endif*@

Manage your account

-
+

Change your account settings


diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/App.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/App.razor index e73101de56..7b0e8a226d 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/App.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/App.razor @@ -5,15 +5,16 @@ - - + + + @*#if (SampleContent) ##endif*@ @*#if (!InteractiveAtRoot) ##elseif (IndividualLocalAuth) - + ##elseif (UseServer && UseWebAssembly) ##elseif (UseServer) @@ -27,7 +28,7 @@ @*#if (!InteractiveAtRoot) ##elseif (IndividualLocalAuth) - + ##elseif (UseServer && UseWebAssembly) ##elseif (UseServer) @@ -46,9 +47,8 @@ [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; - private IComponentRenderMode? RenderModeForPage => HttpContext.Request.Path.StartsWithSegments("/Account") - ? null - : InteractiveAuto; + private IComponentRenderMode? PageRenderMode => + HttpContext.AcceptsInteractiveRouting() ? InteractiveAuto : null; } #elseif (UseServer) @@ -56,9 +56,8 @@ [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; - private IComponentRenderMode? RenderModeForPage => HttpContext.Request.Path.StartsWithSegments("/Account") - ? null - : InteractiveServer; + private IComponentRenderMode? PageRenderMode => + HttpContext.AcceptsInteractiveRouting() ? InteractiveServer : null; } #else @@ -66,8 +65,7 @@ [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; - private IComponentRenderMode? RenderModeForPage => HttpContext.Request.Path.StartsWithSegments("/Account") - ? null - : InteractiveWebAssembly; + private IComponentRenderMode? PageRenderMode => + HttpContext.AcceptsInteractiveRouting() ? InteractiveWebAssembly : null; } #endif*@ diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Layout/MainLayout.razor b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Layout/MainLayout.razor index cf599cc0b5..b0b6eb0f48 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Layout/MainLayout.razor +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Layout/MainLayout.razor @@ -20,15 +20,14 @@ ##else -
- @Body -
+ +@Body ##endif*@ @*#if (UseServer || UseWebAssembly) --> -
+
An unhandled error has occurred. - Reload - 🗙 + Reload + 🗙
##endif*@ diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.Main.cs b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.Main.cs index 3628debc32..fb48cdf232 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.Main.cs +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.Main.cs @@ -1,7 +1,6 @@ #if (IndividualLocalAuth) +#if (UseServer) using Microsoft.AspNetCore.Components.Authorization; -#if (!UseServer && !UseWebAssembly) -using Microsoft.AspNetCore.Components.Server; #endif using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; @@ -25,52 +24,53 @@ public static void Main(string[] args) var builder = WebApplication.CreateBuilder(args); // Add services to the container. -#if (!UseServer && !UseWebAssembly) + #if (!UseServer && !UseWebAssembly) builder.Services.AddRazorComponents(); -#else + #else builder.Services.AddRazorComponents() -#if (UseServer && UseWebAssembly) + #if (UseServer && UseWebAssembly && IndividualLocalAuth) + .AddInteractiveServerComponents() + .AddInteractiveWebAssemblyComponents() + .AddAuthenticationStateSerialization(); + #elif (UseServer && UseWebAssembly) .AddInteractiveServerComponents() .AddInteractiveWebAssemblyComponents(); -#elif (UseServer) + #elif (UseServer) .AddInteractiveServerComponents(); -#elif (UseWebAssembly) + #elif (UseWebAssembly && IndividualLocalAuth) + .AddInteractiveWebAssemblyComponents() + .AddAuthenticationStateSerialization(); + #elif (UseWebAssembly) .AddInteractiveWebAssemblyComponents(); -#endif -#endif + #endif + #endif builder.Services.AddFluentUIComponents(); -#if (IndividualLocalAuth) + #if (IndividualLocalAuth) builder.Services.AddCascadingAuthenticationState(); builder.Services.AddScoped(); builder.Services.AddScoped(); -#if (UseServer && UseWebAssembly) - builder.Services.AddScoped(); -#elif (UseServer) + #if (UseServer) builder.Services.AddScoped(); -#elif (UseWebAssembly) - builder.Services.AddScoped(); -#else - builder.Services.AddScoped(); -#endif + #endif -#if (!UseServer) - builder.Services.AddAuthorization(); -#endif builder.Services.AddAuthentication(options => { options.DefaultScheme = IdentityConstants.ApplicationScheme; options.DefaultSignInScheme = IdentityConstants.ExternalScheme; }) .AddIdentityCookies(); + #if (!UseServer) + builder.Services.AddAuthorization(); + #endif var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found."); builder.Services.AddDbContext(options => -#if (UseLocalDB) + #if (UseLocalDB) options.UseSqlServer(connectionString)); -#else + #else options.UseSqlite(connectionString)); -#endif + #endif builder.Services.AddDatabaseDeveloperPageExceptionFilter(); builder.Services.AddIdentityCore(options => options.SignIn.RequireConfirmedAccount = true) @@ -80,7 +80,7 @@ public static void Main(string[] args) builder.Services.AddSingleton, IdentityNoOpEmailSender>(); -#endif + #endif var app = builder.Build(); // Configure the HTTP request pipeline. @@ -100,41 +100,41 @@ public static void Main(string[] args) #endif { app.UseExceptionHandler("/Error"); -#if (HasHttpsProfile) + #if (HasHttpsProfile) // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); -#endif + #endif } -#if (HasHttpsProfile) + #if (HasHttpsProfile) app.UseHttpsRedirection(); -#endif - app.UseStaticFiles(); + #endif app.UseAntiforgery(); -#if (UseServer && UseWebAssembly) + app.MapStaticAssets(); + #if (UseServer && UseWebAssembly) app.MapRazorComponents() .AddInteractiveServerRenderMode() .AddInteractiveWebAssemblyRenderMode() -#elif (UseServer) + #elif (UseServer) app.MapRazorComponents() .AddInteractiveServerRenderMode(); -#elif (UseWebAssembly) + #elif (UseWebAssembly) app.MapRazorComponents() .AddInteractiveWebAssemblyRenderMode() -#else + #else app.MapRazorComponents(); -#endif -#if (UseWebAssembly) + #endif + #if (UseWebAssembly) .AddAdditionalAssemblies(typeof(Client._Imports).Assembly); -#endif + #endif -#if (IndividualLocalAuth) + #if (IndividualLocalAuth) // Add additional endpoints required by the Identity /Account Razor components. app.MapAdditionalIdentityEndpoints(); -#endif + #endif app.Run(); } } diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.cs b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.cs index f065dad486..2b40789067 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.cs +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.cs @@ -1,7 +1,6 @@ #if (IndividualLocalAuth) +#if (UseServer) using Microsoft.AspNetCore.Components.Authorization; -#if (!UseServer && !UseWebAssembly) -using Microsoft.AspNetCore.Components.Server; #endif using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; @@ -23,14 +22,21 @@ builder.Services.AddRazorComponents(); #else builder.Services.AddRazorComponents() -#if (UseServer && UseWebAssembly) + #if (UseServer && UseWebAssembly && IndividualLocalAuth) + .AddInteractiveServerComponents() + .AddInteractiveWebAssemblyComponents() + .AddAuthenticationStateSerialization(); + #elif (UseServer && UseWebAssembly) .AddInteractiveServerComponents() .AddInteractiveWebAssemblyComponents(); -#elif (UseServer) + #elif (UseServer) .AddInteractiveServerComponents(); -#elif (UseWebAssembly) + #elif (UseWebAssembly && IndividualLocalAuth) + .AddInteractiveWebAssemblyComponents() + .AddAuthenticationStateSerialization(); + #elif (UseWebAssembly) .AddInteractiveWebAssemblyComponents(); -#endif + #endif #endif builder.Services.AddFluentUIComponents(); @@ -38,25 +44,19 @@ builder.Services.AddCascadingAuthenticationState(); builder.Services.AddScoped(); builder.Services.AddScoped(); -#if (UseServer && UseWebAssembly) -builder.Services.AddScoped(); -#elif (UseServer) +#if (UseServer) builder.Services.AddScoped(); -#elif (UseWebAssembly) -builder.Services.AddScoped(); -#else -builder.Services.AddScoped(); #endif -#if (!UseServer) -builder.Services.AddAuthorization(); -#endif builder.Services.AddAuthentication(options => { options.DefaultScheme = IdentityConstants.ApplicationScheme; options.DefaultSignInScheme = IdentityConstants.ExternalScheme; }) .AddIdentityCookies(); +#if (!UseServer) +builder.Services.AddAuthorization(); +#endif var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found."); builder.Services.AddDbContext(options => @@ -104,9 +104,10 @@ app.UseHttpsRedirection(); #endif -app.UseStaticFiles(); + app.UseAntiforgery(); +app.MapStaticAssets(); #if (UseServer && UseWebAssembly) app.MapRazorComponents() .AddInteractiveServerRenderMode() diff --git a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Properties/launchSettings.json b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Properties/launchSettings.json index 8963735edf..0d554caaa1 100644 --- a/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Properties/launchSettings.json +++ b/src/Templates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Properties/launchSettings.json @@ -1,17 +1,5 @@ { - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:8080", - //#if (HasHttpsProfile) - "sslPort": 44300 - //#else - "sslPort": 0 - //#endif - } - }, + "$schema": "https://json.schemastore.org/launchsettings.json", "profiles": { //#if (HasHttpProfile) "http": { @@ -25,7 +13,11 @@ "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } + //#if (HasHttpsProfile) }, + //#else + } + //#endif //#endif //#if (HasHttpsProfile) "https": { @@ -39,17 +31,7 @@ "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } - }, - //#endif - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - //#if (UseWebAssembly) - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - //#endif - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } } + //#endif } } diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/dotnetcli.host.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/dotnetcli.host.json index 57079fdf6d..c68a8f73fb 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/dotnetcli.host.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/dotnetcli.host.json @@ -1,5 +1,5 @@ { - "$schema": "http://json.schemastore.org/dotnetcli.host", + "$schema": "https://json.schemastore.org/dotnetcli.host", "symbolInfo": { "skipRestore": { "longName": "no-restore", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/ide.host.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/ide.host.json index 67f039cbd5..1d7dbb0d8b 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/ide.host.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/ide.host.json @@ -1,5 +1,5 @@ { - "$schema": "http://json.schemastore.org/ide.host", + "$schema": "https://json.schemastore.org/ide.host", "order": 610, "icon": "icon.png", "disableHttpsSymbol": "NoHttps", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.cs.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.cs.json index b38914abd2..ef8fc76f9e 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.cs.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.cs.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Samostatná aplikace Fluent Blazor WebAssembly", "description": "Šablona projektu pro vytvoření aplikace Blazor, která běží ve WebAssembly. Tato šablona se dá využít pro webové aplikace s propracovanými dynamickými uživatelskými rozhraními (UI).", "symbols/Framework/description": "Cílová architektura pro projekt", - "symbols/Framework/choices/net8.0/description": "Cílový net8.0", - "symbols/IncludeSampleContent/displayName": "_Zahrnout ukázkové stránky", - "symbols/IncludeSampleContent/description": "Nastavuje, jestli se mají přidávat ukázkové stránky a styly pro demonstraci základních vzorů použití.", - "symbols/Empty/description": "Nastavuje, jestli se mají vynechat ukázkové stránky a styly, které demonstrují základní vzory použití.", + "symbols/Framework/choices/net9.0/description": "Cílový net9.0", "symbols/skipRestore/description": "Pokud se tato možnost zadá, přeskočí automatické obnovení projektu při vytvoření.", "symbols/auth/choices/None/description": "Bez ověřování", "symbols/auth/choices/Individual/description": "Ověřování Individual", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "Číslo portu, který se má použít pro koncový bod IIS Express HTTPS v souboru launchSettings.json. Tato možnost se dá použít jenom v případě, že se nepoužije parametr no-https (no-https se bude ignorovat, pokud se použije IndividualAuth nebo OrganizationalAuth).", "symbols/PWA/displayName": "_Progresivní webová aplikace", "symbols/PWA/description": "Pokud je tato možnost zadaná, vytvoří progresivní webovou aplikaci (PWA), která podporuje instalaci a offline použití.", + "symbols/IncludeSampleContent/displayName": "_Zahrnout ukázkové stránky", + "symbols/IncludeSampleContent/description": "Nastavuje, jestli se mají přidávat ukázkové stránky a styly pro demonstraci základních vzorů použití.", + "symbols/Empty/description": "Nastavuje, jestli se mají vynechat ukázkové stránky a styly, které demonstrují základní vzory použití.", "symbols/NoHttps/description": "Určuje, jestli se má protokol HTTPS vypnout. Tato možnost platí jenom v případě, že se pro --auth nepoužívají Individual, IndividualB2C, SingleOrg ani MultiOrg.", "symbols/UseLocalDB/description": "Určuje, jestli se má použít LocalDB namísto SQLite. Tato možnost platí jenom v případě, že je zadáno --auth Individual nebo --auth IndividualB2C.", "symbols/CalledApiUrl/description": "Adresa URL rozhraní API, která se má volat z webové aplikace. Tato možnost platí jenom v případě, že je zadáno --auth SingleOrg, --auth MultiOrg nebo --auth IndividualB2C a také je zadán hostitel ASP.NET Core.", @@ -41,4 +41,4 @@ "postActions/restore/description": "Obnoví balíčky NuGet vyžadované tímto projektem.", "postActions/restore/manualInstructions/default/text": "Spustit dotnet restore", "postActions/open-file/description": "Otevře soubor Readme.txt v editoru." -} \ No newline at end of file +} diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.de.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.de.json index ef531eedb0..cd7925f78b 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.de.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.de.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Eigenständige Fluent Blazor WebAssembly-App", "description": "Eine Projektvorlage für das Erstellen einer Blazor-App, die in WebAssembly ausgeführt wird. Diese Vorlage kann für Web-Apps mit umfangreichen dynamischen Benutzeroberflächen verwendet werden.", "symbols/Framework/description": "Das Zielframework für das Projekt.", - "symbols/Framework/choices/net8.0/description": "Ziel net8.0", - "symbols/IncludeSampleContent/displayName": "_Include Beispielseiten", - "symbols/IncludeSampleContent/description": "Konfiguriert, ob Beispielseiten und Stile hinzugefügt werden, um grundlegende Verwendungsmuster zu veranschaulichen.", - "symbols/Empty/description": "Konfiguriert, ob Beispielseiten und Formatierungen weggelassen werden sollen, die grundlegende Verwendungsmuster veranschaulichen.", + "symbols/Framework/choices/net9.0/description": "Ziel net9.0", "symbols/skipRestore/description": "Wenn angegeben, wird die automatische Wiederherstellung des Projekts beim Erstellen übersprungen.", "symbols/auth/choices/None/description": "Keine Authentifizierung", "symbols/auth/choices/Individual/description": "Individuelle Authentifizierung", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "Portnummer, die für den IIS Express HTTPS Endpunkt in launchSettings.json verwendet werden soll. Diese Option ist nur anwendbar, wenn der Parameter no-https nicht verwendet wird (no-https wird ignoriert, wenn entweder IndividualAuth oder OrganizationalAuth verwendet wird).", "symbols/PWA/displayName": "_Progressive Webanwendung", "symbols/PWA/description": "Wenn angegeben, wird eine Progressive Web Application (PWA) erstellt, die die Installation und Offlineverwendung unterstützt.", + "symbols/IncludeSampleContent/displayName": "_Include Beispielseiten", + "symbols/IncludeSampleContent/description": "Konfiguriert, ob Beispielseiten und Stile hinzugefügt werden, um grundlegende Verwendungsmuster zu veranschaulichen.", + "symbols/Empty/description": "Konfiguriert, ob Beispielseiten und Formatierungen weggelassen werden sollen, die grundlegende Verwendungsmuster veranschaulichen.", "symbols/NoHttps/description": "Ob HTTPS deaktiviert werden soll. Diese Option gilt nur, wenn Individual, IndividualB2C, SingleOrg oder MultiOrg nicht für --auth verwendet werden.", "symbols/UseLocalDB/description": "Ob LocalDB anstelle von SQLite verwendet werden soll. Diese Option gilt nur, wenn --auth Individual oder --auth IndividualB2C angegeben ist.", "symbols/CalledApiUrl/description": "URL der API, die von der Web-App aufgerufen werden soll. Diese Option gilt nur, wenn --auth SingleOrg, --auth MultiOrg oder --auth IndividualB2C ohne und ASP.NET Core-Host angegeben ist.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.en.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.en.json index 1fc46901a3..5ffcdd4ed5 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.en.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.en.json @@ -3,11 +3,7 @@ "name": "Fluent Blazor WebAssembly Standalone App", "description": "A project template for creating a Blazor app that runs on WebAssembly and uses the Fluent component library. This template can be used for web apps with rich dynamic user interfaces (UIs).", "symbols/Framework/description": "The target framework for the project.", - "symbols/Framework/choices/net8.0/description": "Target net8.0", - "_symbols/Framework/choices/net8.0/description.comment": "{Locked='net8.0'}", - "symbols/IncludeSampleContent/displayName": "_Include sample pages", - "symbols/IncludeSampleContent/description": "Configures whether to add sample pages and styling to demonstrate basic usage patterns.", - "symbols/Empty/description": "Configures whether to omit sample pages and styling that demonstrate basic usage patterns.", + "symbols/Framework/choices/net9.0/description": "Target net9.0", "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.", "symbols/auth/choices/None/description": "No authentication", "symbols/auth/choices/Individual/description": "Individual authentication", @@ -33,6 +29,9 @@ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).", "symbols/PWA/displayName": "_Progressive Web Application", "symbols/PWA/description": "If specified, produces a Progressive Web Application (PWA) supporting installation and offline use.", + "symbols/IncludeSampleContent/displayName": "_Include sample pages", + "symbols/IncludeSampleContent/description": "Configures whether to add sample pages and styling to demonstrate basic usage patterns.", + "symbols/Empty/description": "Configures whether to omit sample pages and styling that demonstrate basic usage patterns.", "symbols/NoHttps/description": "Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.", "symbols/UseLocalDB/description": "Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.", "symbols/CalledApiUrl/description": "URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C without and ASP.NET Core host is specified.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.es.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.es.json index 8123000477..6d657dfd9f 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.es.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.es.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Aplicación independiente WebAssembly de Fluent Blazor", "description": "Plantilla de proyecto para crear una aplicación Blazor que se ejecuta en WebAssembly. Esta plantilla se puede usar para las aplicaciones web con interfaces de usuario dinámicas enriquecidas.", "symbols/Framework/description": "Marco de destino del proyecto.", - "symbols/Framework/choices/net8.0/description": "net8.0 de destino", - "symbols/IncludeSampleContent/displayName": "_Incluir páginas de ejemplo", - "symbols/IncludeSampleContent/description": "Configura si se van a agregar páginas de ejemplo y estilos para mostrar patrones de uso básicos.", - "symbols/Empty/description": "Configura si se omiten las páginas de ejemplo y los estilos que muestran patrones de uso básicos.", + "symbols/Framework/choices/net9.0/description": "net9.0 de destino", "symbols/skipRestore/description": "Si se especifica, se omite la restauración automática del proyecto durante la creación.", "symbols/auth/choices/None/description": "Sin autenticación", "symbols/auth/choices/Individual/description": "Autenticación individual", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "Número de puerto que se va a usar para el punto de conexión HTTPS de IIS Express en launchSettings.json. Esta opción solo es aplicable cuando no se usa el parámetro no-https (no-https se omitirá si se usa IndividualAuth o OrganizationalAuth).", "symbols/PWA/displayName": "_Aplicación web progresiva", "symbols/PWA/description": "Si se especifica, produce una aplicación web progresiva (PWA) compatible con la instalación y el uso sin conexión.", + "symbols/IncludeSampleContent/displayName": "_Incluir páginas de ejemplo", + "symbols/IncludeSampleContent/description": "Configura si se van a agregar páginas de ejemplo y estilos para mostrar patrones de uso básicos.", + "symbols/Empty/description": "Configura si se omiten las páginas de ejemplo y los estilos que muestran patrones de uso básicos.", "symbols/NoHttps/description": "Si se va a desactivar HTTPS. Esta opción solo se aplica si Individual, IndividualB2C, SingleOrg o MultiOrg no se usan para --auth.", "symbols/UseLocalDB/description": "Indica si se va a usar LocalDB en lugar de SQLite. Esta opción solo se aplica si se especifica --auth Individual o --auth IndividualB2C.", "symbols/CalledApiUrl/description": "Dirección URL de la API a la que se va a llamar desde la aplicación web. Esta opción solo se aplica si se especifica --auth SingleOrg, --auth MultiOrg o --auth IndividualB2C sin y se especifica ASP.NET host core.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.fr.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.fr.json index 70fbfdbf46..c363c9f38d 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.fr.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.fr.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Application Fluent Blazor WebAssembly autonome", "description": "Modèle de projet permettant de créer une application Blazor qui s'exécute sur WebAssembly. Vous pouvez utiliser ce modèle pour les applications web ayant des IU (interfaces utilisateur) dynamiques riches.", "symbols/Framework/description": "Framework cible du projet.", - "symbols/Framework/choices/net8.0/description": "Cible net8.0", - "symbols/IncludeSampleContent/displayName": "_Inclure des exemples de pages", - "symbols/IncludeSampleContent/description": "Configure s'il faut ajouter des exemples de pages et de style pour illustrer les modèles d'utilisation de base.", - "symbols/Empty/description": "Configure s'il faut omettre les exemples de pages et le style qui illustrent les modèles d'utilisation de base.", + "symbols/Framework/choices/net9.0/description": "Cible net9.0", "symbols/skipRestore/description": "S’il est spécifié, ignore la restauration automatique du projet lors de la création.", "symbols/auth/choices/None/description": "Aucune authentification", "symbols/auth/choices/Individual/description": "Authentification individuelle", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "Numéro de port à utiliser pour le point de terminaison HTTPS IIS Express dans launchSettings.json. Cette option s’applique uniquement lorsque le paramètre no-https n’est pas utilisé (no-https sera ignoré si IndividualAuth ou OrganizationalAuth est utilisé).", "symbols/PWA/displayName": "_Application web progressive", "symbols/PWA/description": "Si ce paramètre est spécifié, produit une application web progressive (PWA) qui prend en charge l’installation et l’utilisation hors connexion.", + "symbols/IncludeSampleContent/displayName": "_Inclure des exemples de pages", + "symbols/IncludeSampleContent/description": "Configure s'il faut ajouter des exemples de pages et de style pour illustrer les modèles d'utilisation de base.", + "symbols/Empty/description": "Configure s'il faut omettre les exemples de pages et le style qui illustrent les modèles d'utilisation de base.", "symbols/NoHttps/description": "Indique s’il faut désactiver HTTPS. Cette option s’applique uniquement si Individual, IndividualB2C, SingleOrg ou MultiOrg ne sont pas utilisés pour --auth.", "symbols/UseLocalDB/description": "Indique s’il faut utiliser localDB au lieu de SQLite. Cette option s’applique uniquement si --auth Individual ou --auth IndividualB2C est spécifié.", "symbols/CalledApiUrl/description": "URL de l’API à appeler à partir de l’application web. Cette option s’applique uniquement si --auth SingleOrg, --auth MultiOrg ou --auth IndividualB2C sans et ASP.NET’hôte principal est spécifié.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.it.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.it.json index be58c6a545..ef3e33fe44 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.it.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.it.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "App autonoma Fluent Blazor WebAssembly", "description": "Modello di progetto per la creazione di un'app Blazor eseguita in WebAssembly. Questo modello può essere usato per app Web con interfacce utente dinamiche.", "symbols/Framework/description": "Il framework di destinazione per il progetto.", - "symbols/Framework/choices/net8.0/description": "Destinazione net8.0", - "symbols/IncludeSampleContent/displayName": "_Include pagine di esempio", - "symbols/IncludeSampleContent/description": "Consente di configurare se aggiungere pagine di esempio e stile per mostrare modelli di utilizzo di base.", - "symbols/Empty/description": "Consente di configurare se omettere pagine di esempio e stile che mostrano modelli di utilizzo di base.", + "symbols/Framework/choices/net9.0/description": "Destinazione net9.0", "symbols/skipRestore/description": "Se specificato, ignora il ripristino automatico del progetto durante la creazione.", "symbols/auth/choices/None/description": "Nessuna autenticazione", "symbols/auth/choices/Individual/description": "Autenticazione singola", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "Numero di porta da usare per l'endpoint HTTPS IIS Express in launchSettings.json. Questa opzione è applicabile solo quando il parametro no-https non viene usato (no-https verrà ignorato se si usa IndividualAuth o OrganizationalAuth).", "symbols/PWA/displayName": "Applicazione Web _Progressive", "symbols/PWA/description": "Se specificato, produce un'applicazione Web progressiva (PWA) che supporta l'installazione e l'uso offline.", + "symbols/IncludeSampleContent/displayName": "_Include pagine di esempio", + "symbols/IncludeSampleContent/description": "Consente di configurare se aggiungere pagine di esempio e stile per mostrare modelli di utilizzo di base.", + "symbols/Empty/description": "Consente di configurare se omettere pagine di esempio e stile che mostrano modelli di utilizzo di base.", "symbols/NoHttps/description": "Indica se disattivare HTTPS. Questa opzione si applica solo se Individual, IndividualB2C, SingleOrg o MultiOrg non vengono usati per --auth.", "symbols/UseLocalDB/description": "Indica se usare LocalDB invece di SQLite. Questa opzione si applica solo se è specificato --auth Individual o --auth IndividualB2C.", "symbols/CalledApiUrl/description": "URL dell'API da chiamare dall'app Web. Questa opzione si applica solo se è specificato --auth SingleOrg, --auth MultiOrg o --auth IndividualB2C without e host ASP.NET Core.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ja.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ja.json index a594bb8291..32761a4c8a 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ja.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ja.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor WebAssembly スタンドアロン アプリ", "description": "WebAssembly で実行される Blazor アプリを作成するためのプロジェクト テンプレート。このテンプレートは、高度でダイナミックなユーザー インターフェイス (UI) を備えた Web アプリに使用できます。", "symbols/Framework/description": "プロジェクトのターゲット フレームワークです。", - "symbols/Framework/choices/net8.0/description": "ターゲット net8.0", - "symbols/IncludeSampleContent/displayName": "サンプル ページを含める(_I)", - "symbols/IncludeSampleContent/description": "基本的な使用パターンを示すサンプル ページとスタイルを追加するかどうかを構成します。", - "symbols/Empty/description": "基本的な使用パターンを示すサンプル ページとスタイルを省略するかどうかを構成します。", + "symbols/Framework/choices/net9.0/description": "ターゲット net9.0", "symbols/skipRestore/description": "指定した場合、作成時にプロジェクトの自動復元がスキップされます。", "symbols/auth/choices/None/description": "認証なし", "symbols/auth/choices/Individual/description": "個別の認証", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "launchSettings.json で IIS Express HTTPS エンドポイントに使用するポート番号。このオプションは、HTTPS 以外のパラメーターが使用されていない場合にのみ適用されます (IndividualAuth または OrganizationalAuth が使用されている場合は、HTTPS 以外は無視されます)。", "symbols/PWA/displayName": "プログレッシブ Web アプリケーション(_P)", "symbols/PWA/description": "指定した場合、インストールとオフラインでの使用をサポートするプログレッシブ Web アプリケーション (PWA) が生成されます。", + "symbols/IncludeSampleContent/displayName": "サンプル ページを含める(_I)", + "symbols/IncludeSampleContent/description": "基本的な使用パターンを示すサンプル ページとスタイルを追加するかどうかを構成します。", + "symbols/Empty/description": "基本的な使用パターンを示すサンプル ページとスタイルを省略するかどうかを構成します。", "symbols/NoHttps/description": "HTTPS をオフにするかどうか。このオプションは、Individual、IndividualB2C、SingleOrg、または MultiOrg が --auth に使用されていない場合にのみ適用されます。", "symbols/UseLocalDB/description": "SQLite の代わりに LocalDB を使用するかどうか。このオプションは、--auth Individual または --auth IndividualB2C が指定されている場合にのみ適用されます。", "symbols/CalledApiUrl/description": "Web アプリから呼び出す API の URL。このオプションは、--auth SingleOrg、--auth MultiOrg、または --auth IndividualB2C で、ASP.NET Core ホストが指定されていない場合にのみ適用されます。", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ko.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ko.json index 8862f2a778..422e637f75 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ko.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ko.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor WebAssembly 독립 실행형 앱", "description": "WebAssembly에서 실행되는 Blazor 앱을 만드는 데 사용되는 프로젝트 템플릿입니다. 이 템플릿을 사용하여 다양한 동적 UI(사용자 인터페이스)가 포함된 웹앱을 만들 수 있습니다.", "symbols/Framework/description": "프로젝트에 대한 대상 프레임워크입니다.", - "symbols/Framework/choices/net8.0/description": "대상 net8.0", - "symbols/IncludeSampleContent/displayName": "샘플 페이지 포함(_I)", - "symbols/IncludeSampleContent/description": "기본 사용 패턴을 보여주기 위해 샘플 페이지 및 스타일을 추가할지 여부를 구성합니다.", - "symbols/Empty/description": "기본 사용 패턴을 보여주는 샘플 페이지 및 스타일을 생략할지 여부를 구성합니다.", + "symbols/Framework/choices/net9.0/description": "대상 net9.0", "symbols/skipRestore/description": "지정된 경우, 프로젝트 생성 시 자동 복원을 건너뜁니다.", "symbols/auth/choices/None/description": "인증 없음", "symbols/auth/choices/Individual/description": "개별 인증", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "launchSettings.json의 IIS Express 엔드포인트에 사용할 포트 번호입니다. 이 옵션은 매개 변수 no-https가 사용되지 않은 경우에만 적용됩니다(IndividualAuth 또는 OrganizationalAuth가 사용되는 경우 no-https는 무시됨).", "symbols/PWA/displayName": "프로그레시브 웹 애플리케이션(_P)", "symbols/PWA/description": "지정된 경우 설치 및 오프라인 사용을 지원하는 PWA(프로그레시브 웹 응용 프로그램)를 생성합니다.", + "symbols/IncludeSampleContent/displayName": "샘플 페이지 포함(_I)", + "symbols/IncludeSampleContent/description": "기본 사용 패턴을 보여주기 위해 샘플 페이지 및 스타일을 추가할지 여부를 구성합니다.", + "symbols/Empty/description": "기본 사용 패턴을 보여주는 샘플 페이지 및 스타일을 생략할지 여부를 구성합니다.", "symbols/NoHttps/description": "HTTPS를 끌지 여부입니다. 이 옵션은 Individual, IndividualB2C, SingleOrg 또는 MultiOrg가 --auth에 사용되지 않는 경우에만 적용됩니다.", "symbols/UseLocalDB/description": "SQLite 대신 LocalDB를 사용할지 여부입니다. 이 옵션은 --auth Individual 또는 --auth IndividualB2C가 지정된 경우에만 적용됩니다.", "symbols/CalledApiUrl/description": "웹앱에서 호출할 API의 URL입니다. 이 옵션은 --auth SingleOrg, --auth MultiOrg 또는 --auth IndividualB2C without and ASP.NET Core 호스트가 지정된 경우에만 적용됩니다.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.pl.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.pl.json index 81c92daa07..c05b446a40 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.pl.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.pl.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Autonomiczna aplikacja zestawu WebAssembly platformy Blazor", "description": "Szablon projektu służący do tworzenia aplikacji Blazor działającej na zestawie WebAssembly. Ten szablon może być używany dla aplikacji internetowych z rozbudowanymi, dynamicznymi interfejsami użytkowników.", "symbols/Framework/description": "Platforma docelowa dla tego projektu.", - "symbols/Framework/choices/net8.0/description": "Docelowa platforma net8.0", - "symbols/IncludeSampleContent/displayName": "_Dołącz przykładowe strony", - "symbols/IncludeSampleContent/description": "Konfiguruje, czy dodać przykładowe strony i style w celu zademonstrowania podstawowych wzorców użycia.", - "symbols/Empty/description": "Konfiguruje, czy pomijać przykładowe strony i style demonstrujące podstawowe wzorce użycia.", + "symbols/Framework/choices/net9.0/description": "Docelowa platforma net9.0", "symbols/skipRestore/description": "Jeśli ta opcja jest określona, pomija automatyczne przywracanie projektu podczas tworzenia.", "symbols/auth/choices/None/description": "Bez uwierzytelniania", "symbols/auth/choices/Individual/description": "Uwierzytelnianie indywidualne", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "Numer portu do użycia dla punktu końcowego HTTPS usług IIS Express w pliku launchSettings.json. Ta opcja ma zastosowanie tylko wtedy, gdy nie jest używany parametr no-https (jeśli zostanie użyte uwierzytelnianie IndividualAuth lub OrganizationalAuth, parametr no-https zostanie zignorowana).", "symbols/PWA/displayName": "_Progresywna aplikacja internetowa", "symbols/PWA/description": "Jeśli zostanie określony, tworzy progresywną aplikację internetową (PWA) obsługującą instalację i używanie w trybie offline.", + "symbols/IncludeSampleContent/displayName": "_Dołącz przykładowe strony", + "symbols/IncludeSampleContent/description": "Konfiguruje, czy dodać przykładowe strony i style w celu zademonstrowania podstawowych wzorców użycia.", + "symbols/Empty/description": "Konfiguruje, czy pomijać przykładowe strony i style demonstrujące podstawowe wzorce użycia.", "symbols/NoHttps/description": "Określa, czy wyłączyć protokół HTTPS. Ta opcja ma zastosowanie tylko wtedy, gdy dla uwierzytelniania --auth nie są używane elementy Individual, IndividualB2C, SingleOrg lub MultiOrg.", "symbols/UseLocalDB/description": "Określa, czy używać bazy danych LocalDB zamiast oprogramowania SQLite. Ta opcja ma zastosowanie tylko wtedy, gdy określono uwierzytelnianie --auth Individual lub --auth IndividualB2C.", "symbols/CalledApiUrl/description": "Adres URL interfejsu API do wywołania z aplikacji internetowej. Ta opcja ma zastosowanie tylko wtedy, gdy określono uwierzytelnianie --auth SingleOrg, --auth MultiOrg lub --auth IndividualB2C bez hosta platformy ASP.NET Core.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.pt-BR.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.pt-BR.json index 802626a82e..fb22cd5ef1 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.pt-BR.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.pt-BR.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Aplicativo Autônomo Fluent Blazor WebAssembly", "description": "Um modelo de projeto para criar um aplicativo Blazor que é executado no WebAssembly. Esse modelo pode ser usado para aplicativos Web com UIs (interfaces do usuário) completas e dinâmicas.", "symbols/Framework/description": "A estrutura de destino do projeto.", - "symbols/Framework/choices/net8.0/description": "net8.0 de destino", - "symbols/IncludeSampleContent/displayName": "_Incluir páginas de amostra", - "symbols/IncludeSampleContent/description": "Configura se deseja adicionar páginas de amostra e estilo para demonstrar padrões de uso básicos.", - "symbols/Empty/description": "Configura a omissão de páginas de amostra e estilo que demonstram padrões básicos de uso.", + "symbols/Framework/choices/net9.0/description": "net9.0 de destino", "symbols/skipRestore/description": "Se especificado, ignora a restauração automática do projeto sendo criado.", "symbols/auth/choices/None/description": "Sem autenticação", "symbols/auth/choices/Individual/description": "Autenticação individual", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "Número da porta a ser usada para o ponto de extremidade HTTPS do IIS Express em launchSettings.json. Essa opção só é aplicável quando o parâmetro no-https não é usado (no-https será ignorado se IndividualAuth ou OrganizationalAuth for usado).", "symbols/PWA/displayName": "_Aplicativo da Web Progressivo", "symbols/PWA/description": "Se especificado, produz um Progressive Web Application (PWA) com suporte para instalação e uso offline.", + "symbols/IncludeSampleContent/displayName": "_Incluir páginas de amostra", + "symbols/IncludeSampleContent/description": "Configura se deseja adicionar páginas de amostra e estilo para demonstrar padrões de uso básicos.", + "symbols/Empty/description": "Configura a omissão de páginas de amostra e estilo que demonstram padrões básicos de uso.", "symbols/NoHttps/description": "Se o HTTPS deve ser desativado. Essa opção se aplica somente se Individual, IndividualB2C, SingleOrg ou MultiOrg não forem usados para --auth.", "symbols/UseLocalDB/description": "Se deve usar LocalDB em vez de SQLite. Esta opção só se aplica se --auth Individual ou --auth IndividualB2C for especificado.", "symbols/CalledApiUrl/description": "URL da API para chamar do aplicativo Web. Essa opção só se aplica se --auth SingleOrg, --auth MultiOrg ou --auth IndividualB2C sem um host ASP.NET Core for especificado.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ru.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ru.json index 3e674eaac9..74a12b1c68 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ru.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.ru.json @@ -1,12 +1,9 @@ -{ +{ "author": "Майкрософт", "name": "Изолированное приложение Fluent Blazor WebAssembly", "description": "Шаблон проекта для создания приложения Blazor, которое запускается в WebAssembly. Этот шаблон можно использовать для веб-приложений с полнофункциональными динамическими пользовательскими интерфейсами.", "symbols/Framework/description": "Целевая платформа для проекта.", - "symbols/Framework/choices/net8.0/description": "Целевая net8.0", - "symbols/IncludeSampleContent/displayName": "_Включить примеры страниц", - "symbols/IncludeSampleContent/description": "Настраивает, следует ли добавлять примеры страниц и стили для демонстрации базовых шаблонов использования.", - "symbols/Empty/description": "Настраивает, следует ли пропускать примеры страниц и стили, демонстрирующие базовые шаблоны использования.", + "symbols/Framework/choices/net9.0/description": "Целевая net9.0", "symbols/skipRestore/description": "Если установлено, автоматическое восстановление проекта при создании пропускается.", "symbols/auth/choices/None/description": "Без проверки подлинности", "symbols/auth/choices/Individual/description": "Индивидуальная проверка подлинности", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "Номер порта, используемый для конечной точки HTTPS IIS Express в launchSettings.json. Этот параметр применим только в том случае, если no-https не используется (при использовании IndividualAuth или OrganizationalAuth no-https игнорируется).", "symbols/PWA/displayName": "_Прогрессивное веб-приложение", "symbols/PWA/description": "Если указывается, используется для создания прогрессивного веб-приложения (PWA), поддерживающего установку и автономное использование.", + "symbols/IncludeSampleContent/displayName": "_Включить примеры страниц", + "symbols/IncludeSampleContent/description": "Настраивает, следует ли добавлять примеры страниц и стили для демонстрации базовых шаблонов использования.", + "symbols/Empty/description": "Настраивает, следует ли пропускать примеры страниц и стили, демонстрирующие базовые шаблоны использования.", "symbols/NoHttps/description": "Следует ли отключить HTTPS. Этот параметр применяется, только если для --auth не используются Individual, IndividualB2C, SingleOrg или MultiOrg.", "symbols/UseLocalDB/description": "Следует ли использовать LocalDB вместо SQLite. Этот параметр применяется, только если указывается --auth Individual или --auth IndividualB2C.", "symbols/CalledApiUrl/description": "URL-адрес API для вызова из веб-приложения. Этот параметр применяется, только если указывается --auth SingleOrg, --auth MultiOrg или --auth IndividualB2C без узла ASP.NET Core.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.tr.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.tr.json index 0b6246d163..5a2b213e2d 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.tr.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.tr.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor WebAssembly Tek Başına Uygulaması", "description": "WebAssembly üzerinde çalışan bir Blazor uygulaması oluşturmaya yönelik proje şablonu. Bu şablon, zengin dinamik kullanıcı arabirimlerine (UI) sahip web uygulamaları için kullanılabilir.", "symbols/Framework/description": "Projenin hedef çerçevesi.", - "symbols/Framework/choices/net8.0/description": "Hedef net8.0", - "symbols/IncludeSampleContent/displayName": "Örnek _sayfalar ekle", - "symbols/IncludeSampleContent/description": "Temel kullanım düzenlerini göstermek için örnek sayfaların ve stil oluşturma özelliklerinin eklenip eklenmeyeceğini yapılandırır.", - "symbols/Empty/description": "Temel kullanım düzenlerini gösteren örnek sayfaların ve stil oluşturma özelliklerinin atlanıp atlanmayacağını yapılandırır.", + "symbols/Framework/choices/net9.0/description": "Hedef net9.0", "symbols/skipRestore/description": "Belirtilirse, oluşturma sırasında projenin otomatik geri yüklenmesini atlar.", "symbols/auth/choices/None/description": "Kimlik doğrulaması yok", "symbols/auth/choices/Individual/description": "Bireysel kimlik doğrulaması", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "launchSettings.json içinde IIS Express HTTPS uç noktası için kullanılacak bağlantı noktası numarası. Bu seçenek yalnızca no-https parametresi kullanılmazsa uygulanabilir (IndividualAuth veya OrganizationalAuth kullanılırsa no-https yoksayılır).", "symbols/PWA/displayName": "_Aşamalı Web Uygulaması", "symbols/PWA/description": "Belirtilmişse, yükleme ve çevrimdışı kullanımı destekleyen bir Aşamalı Web Uygulaması (PWA) oluşturur.", + "symbols/IncludeSampleContent/displayName": "Örnek _sayfalar ekle", + "symbols/IncludeSampleContent/description": "Temel kullanım düzenlerini göstermek için örnek sayfaların ve stil oluşturma özelliklerinin eklenip eklenmeyeceğini yapılandırır.", + "symbols/Empty/description": "Temel kullanım düzenlerini gösteren örnek sayfaların ve stil oluşturma özelliklerinin atlanıp atlanmayacağını yapılandırır.", "symbols/NoHttps/description": "HTTPS'nin kapatılıp kapatılmayacağı. Bu seçenek yalnızca Bireysel, IndividualB2C, SingleOrg veya MultiOrg -- auth için kullanılmazsa geçerlidir.", "symbols/UseLocalDB/description": "SQLite yerine LocalDB'nin kullanılıp kullanılmayacağı. Bu seçenek yalnızca --auth Individual veya --auth IndividualB2C belirtilirse geçerlidir.", "symbols/CalledApiUrl/description": "Web uygulamasından çağrılan API URL'si. Bu seçenek yalnızca --auth SingleOrg, --auth MultiOrg veya --auth IndividualB2C without ve ASP.NET Core konağı belirtilirse geçerlidir.", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.zh-Hans.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.zh-Hans.json index cc607b13a8..19f4bc2f4d 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.zh-Hans.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.zh-Hans.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor WebAssembly 独立应用", "description": "用于创建在 WebAssembly 上运行的 Blazor 应用的项目模板。此模板可用于具有丰富动态用户界面(UI)的 Web 应用。", "symbols/Framework/description": "项目的目标框架。", - "symbols/Framework/choices/net8.0/description": "目标 net8.0", - "symbols/IncludeSampleContent/displayName": "包含示例页(_I)", - "symbols/IncludeSampleContent/description": "配置是否添加示例页和样式以演示基本使用模式。", - "symbols/Empty/description": "配置是否忽略演示基本使用模式的示例页和样式。", + "symbols/Framework/choices/net9.0/description": "目标 net9.0", "symbols/skipRestore/description": "如果指定,则在创建时跳过项目的自动还原。", "symbols/auth/choices/None/description": "无身份验证", "symbols/auth/choices/Individual/description": "个人身份验证", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "要用于 launchSettings.json 中 IIS Express HTTPS 终结点的端口号。仅当不使用参数 no-https 时,此选项才适用(如果使用 IndividualAuth 或 OrganizationalAuth,则将忽略 no-https)。", "symbols/PWA/displayName": "渐进式 Web 应用程序(_P)", "symbols/PWA/description": "如果指定,则生成支持安装和脱机使用的渐进式 Web 应用程序(PWA)。", + "symbols/IncludeSampleContent/displayName": "包含示例页(_I)", + "symbols/IncludeSampleContent/description": "配置是否添加示例页和样式以演示基本使用模式。", + "symbols/Empty/description": "配置是否忽略演示基本使用模式的示例页和样式。", "symbols/NoHttps/description": "是否禁用 HTTPS。仅当 Individual、IndividualB2C、SingleOrg 或 MultiOrg 不用于 --auth 时,此选项才适用。", "symbols/UseLocalDB/description": "是否使用 LocalDB 而不是 SQLite。仅当指定了 --auth Individual 或 --auth IndividualB2C 时,此选项才适用。", "symbols/CalledApiUrl/description": "要从 Web 应用调用的 API 的 URL。仅当指定了 --auth SingleOrg、--auth MultiOrg 或不带 ASP.NET Core 主机的 --auth IndividualB2C 时,此选项才适用。", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.zh-Hant.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.zh-Hant.json index de2690e84a..e271902847 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.zh-Hant.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.zh-Hant.json @@ -1,12 +1,9 @@ -{ +{ "author": "Microsoft", "name": "Fluent Blazor WebAssembly 獨立應用程式", "description": "用來建立在 WebAssembly 上執行之 Blazor 應用程式的專案範本。此範本可用於具有豐富動態使用者介面 (UI) 的 Web 應用程式。", "symbols/Framework/description": "專案的目標 Framework。", - "symbols/Framework/choices/net8.0/description": "目標 net8.0", - "symbols/IncludeSampleContent/displayName": "包含範例頁面(_I)", - "symbols/IncludeSampleContent/description": "設定是否要新增範例頁面和樣式,以示範基本使用模式。", - "symbols/Empty/description": "設定是否要省略範例頁面和樣式,其示範基本使用模式。", + "symbols/Framework/choices/net9.0/description": "目標 net9.0", "symbols/skipRestore/description": "若指定,會在建立時跳過專案的自動還原。", "symbols/auth/choices/None/description": "沒有驗證", "symbols/auth/choices/Individual/description": "個別驗證", @@ -32,6 +29,9 @@ "symbols/iisHttpsPort/description": "launchSettings.json 中 IIS Express HTTPS 端點要使用的連接埠號碼。只有在未使用參數 no-https 時,才適用此選項 (如果使用 IndividualAuth 或 OrganizationalAuth,則會忽略 no-https)。", "symbols/PWA/displayName": "漸進式 Web 應用程式(_P)", "symbols/PWA/description": "若指定,會產生漸進式 Web 應用程式 (PWA) 支援安裝與離線使用。", + "symbols/IncludeSampleContent/displayName": "包含範例頁面(_I)", + "symbols/IncludeSampleContent/description": "設定是否要新增範例頁面和樣式,以示範基本使用模式。", + "symbols/Empty/description": "設定是否要省略範例頁面和樣式,其示範基本使用模式。", "symbols/NoHttps/description": "是否要關閉 HTTPS。只有當 Individual、IndividualB2C、SingleOrg 或 MultiOrg 未用於 --auth 時,才適用此選項。", "symbols/UseLocalDB/description": "是否使用 LocalDB 而非 SQLite。只有在已指定 --auth Individual 或 --auth IndividualB2C 時,才適用此選項。", "symbols/CalledApiUrl/description": "要從 Web 應用程式呼叫的 API URL。只有在已指定 --auth SingleOrg、--auth MultiOrg 或 --auth IndividualB2C 時 (不含 ASP.NET Core 主機),才適用此選項。", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/template.json b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/template.json index 9158193005..6c9358b9f9 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/template.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/.template.config/template.json @@ -12,7 +12,7 @@ "defaultName": "BlazorApp", "description": "A project template for creating a Blazor app that runs on WebAssembly and uses the Fluent component library. This template can be used for web apps with rich dynamic user interfaces (UIs).", "groupIdentity": "Microsoft.Web.Fluent.Blazor.Wasm", - "precedence": "9801", + "precedence": "9901", "guids": [ "4C26868E-5E7C-458D-82E3-040509D0C71F", "5990939C-7E7B-4CFA-86FF-44CA5756498A", @@ -20,8 +20,8 @@ "0AFFA7FD-4E37-4636-AB91-3753E746DB98", "53bc9b9d-9d6a-45d4-8429-2a2761773502" // Client ID ], - "identity": "Microsoft.Web.Fluent.Blazor.Wasm.CSharp.8.0", - "thirdPartyNotices": "https://aka.ms/aspnetcore/8.0-third-party-notices", + "identity": "Microsoft.Web.Fluent.Blazor.Wasm.CSharp.9.0", + "thirdPartyNotices": "https://aka.ms/aspnetcore/9.0-third-party-notices", "preferNameDirectory": true, "primaryOutputs": [ { @@ -140,12 +140,12 @@ "datatype": "choice", "choices": [ { - "choice": "net8.0", - "description": "Target net8.0" + "choice": "net9.0", + "description": "Target net9.0" } ], - "replaces": "net8.0", - "defaultValue": "net8.0" + "replaces": "net9.0", + "defaultValue": "net9.0" }, "HostIdentifier": { "type": "bind", diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/ComponentsWebAssembly-CSharp.csproj b/src/Templates/content/ComponentsWebAssembly-CSharp/ComponentsWebAssembly-CSharp.csproj index ff2d5adb9f..388e54c073 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/ComponentsWebAssembly-CSharp.csproj +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/ComponentsWebAssembly-CSharp.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable @@ -10,10 +10,10 @@ - - - - + + + + @@ -22,5 +22,6 @@ + diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/Program.cs b/src/Templates/content/ComponentsWebAssembly-CSharp/Program.cs index 4a2e4ee463..b49dc8dd1c 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/Program.cs +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/Program.cs @@ -7,7 +7,6 @@ builder.RootComponents.Add("#app"); builder.RootComponents.Add("head::after"); - builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); builder.Services.AddFluentUIComponents(); #if (!NoAuth) @@ -16,10 +15,10 @@ #if (IndividualLocalAuth) builder.Services.AddOidcAuthentication(options => { -#if (MissingAuthority) + #if(MissingAuthority) // Configure your authentication provider options here. // For more information, see https://aka.ms/blazor-standalone-auth -#endif + #endif builder.Configuration.Bind("Local", options.ProviderOptions); }); #endif @@ -29,7 +28,7 @@ builder.Configuration.Bind("AzureAdB2C", options.ProviderOptions.Authentication); }); #endif -#if (OrganizationalAuth) +#if(OrganizationalAuth) builder.Services.AddMsalAuthentication(options => { builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication); diff --git a/src/Templates/content/ComponentsWebAssembly-CSharp/Properties/launchSettings.json b/src/Templates/content/ComponentsWebAssembly-CSharp/Properties/launchSettings.json index 854db20e9e..167c237f02 100644 --- a/src/Templates/content/ComponentsWebAssembly-CSharp/Properties/launchSettings.json +++ b/src/Templates/content/ComponentsWebAssembly-CSharp/Properties/launchSettings.json @@ -1,22 +1,5 @@ { - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - //#if (WindowsAuth) - "windowsAuthentication": true, - "anonymousAuthentication": false, - //#else - "windowsAuthentication": false, - "anonymousAuthentication": true, - //#endif - "iisExpress": { - "applicationUrl": "http://localhost:8080", - //#if (HasHttpsProfile) - "sslPort": 44300 - //#else - "sslPort": 0 - //#endif - } - }, + "$schema": "https://json.schemastore.org/launchsettings.json", "profiles": { //#if (HasHttpProfile) "http": { @@ -28,7 +11,11 @@ "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } + //#if (HasHttpsProfile) }, + //#else + } + //#endif //#endif //#if (HasHttpsProfile) "https": { @@ -40,15 +27,7 @@ "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } - }, - //#endif - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } } + //#endif } }