問題タブ [dotnet-publish]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
115 参照

.net - Microsoft.NET.Sdk.Web をライブラリ プロジェクトとして使用する場合の発行の制限事項

.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は発行動作に依存しないため、意図したとおりに動作します。