-2

.NET テンプレートから ASP.NET Core でホストされる Blazor アプリを作成すると、次のような結果が得られます。

  • WebHostプロジェクト (Microsoft.NET.Sdk.Web、Exe 出力タイプ)
  • BlazorAppプロジェクト (Microsoft.NET.Sdk.BlazorWebAssembly、Exe 出力タイプ)

WebHost プロジェクトで簡単に実行できdotnet publishBlazor Web アプリのすべてのコンテンツをホストする実行可能ファイルを取得します。

したがって、たとえば WPF を使用してサーバー構成 UI を追加したい場合、最終的にはこのようなものになります。(WebHost プロジェクトはライブラリになり、ServerUI によって使用/参照されます)

  • ServerUIプロジェクト
    • Microsoft.NET.SdkUseWPF設定して使用true
    • OutputTypeに設定されていますWinExe
    • (サーバー) アプリケーションのエントリ ポイントとなる最上位プロジェクト
    • サーバーをセットアップするためのグラフィカル ユーザー インターフェイスが含まれています (ポート、認証など)。
    • 参照WebHostプロジェクト
  • WebHostプロジェクト
    • Microsoft.NET.Sdk.WebASP.NET Core ランタイムにアクセスするために使用します
    • OutputTypeに設定されていますLibrary
    • ASP.NET Core ホスティングのすべてのコードが含まれています
    • BlazorAppプロジェクトの参照
  • BlazorAppプロジェクト
    • 用途Microsoft.NET.Sdk.BlazorWebAssembly
    • OutputTypeに設定されてExeいます (デフォルト)
    • ブラウザーで実行するすべての Blazor Web アプリの要素が含まれています

ここdotnet publishServerUIwwwrootプロジェクトを実行すると、ユーザー インターフェイスを表示し、ASP.NET Core ホスティング機能を持つ実行可能ファイルが作成されますが、フォルダーがそのように公開されないため、Blazor Web アプリへのアクセスは失敗します。

現在、私が認識しているこの問題を修正する方法は 2 つあります。

  • ServerUIも使用するようにするか、Microsoft.NET.Sdk.Web
  • または、 WebHostまたはBlazorAppプロジェクトのいずれかをServerUIプロジェクトと同じフォルダーに明示的に発行します。

それは私に疑問を抱かせますMicrosoft.NET.Sdk.Web.ライブラリプロジェクトに実際に使用することは可能ですか?もしそうなら、制限は何ですか.

再現する手順

  • このレポをクローン
  • チェックアウトしたフォルダで端末を開く
  • 走るdotnet publish ServerUI -o bin\publish
  • wwwrootフォルダーはbin\publishディレクトリにありません
  • 対照的に、実行dotnet run --project ServerUIは発行動作に依存しないため、意図したとおりに動作します。
4

1 に答える 1

2

デスクトップ プロジェクトを公開して個別に実行すると、VS 開発環境の外に出ます。wwwrootWASM プロジェクトのフォルダーをデスクトップ プロジェクトにコピーする暗黙の方法はありません。

これは私がしたことです:

  1. アプリケーションの受信フォルダを設定します。
  2. ServerUI をフォルダーに公開します。
  3. BlazorApp を同じフォルダーに発行します。

index.htmlの css を修正する必要があります。

    <link href="css/app.css" rel="stylesheet" />
    <link href="BlazorApp.styles.css" rel="stylesheet" />

その後、公開されたディレクトリからアプリを実行できます。

ここに画像の説明を入力

ここに画像の説明を入力

于 2022-01-18T14:39:57.390 に答える