問題タブ [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.
.net - Microsoft.NET.Sdk.Web をライブラリ プロジェクトとして使用する場合の発行の制限事項
.NET テンプレートから ASP.NET Core でホストされる Blazor アプリを作成すると、次のような結果が得られます。
- WebHostプロジェクト (Microsoft.NET.Sdk.Web、Exe 出力タイプ)
- BlazorAppプロジェクト (Microsoft.NET.Sdk.BlazorWebAssembly、Exe 出力タイプ)
WebHost プロジェクトで簡単に実行できdotnet publish
、Blazor Web アプリのすべてのコンテンツをホストする実行可能ファイルを取得します。
したがって、たとえば WPF を使用してサーバー構成 UI を追加したい場合、最終的にはこのようなものになります。(WebHost プロジェクトはライブラリになり、ServerUI によって使用/参照されます)
- ServerUIプロジェクト
Microsoft.NET.Sdk
にUseWPF
設定して使用true
OutputType
に設定されていますWinExe
- (サーバー) アプリケーションのエントリ ポイントとなる最上位プロジェクト
- サーバーをセットアップするためのグラフィカル ユーザー インターフェイスが含まれています (ポート、認証など)。
- 参照WebHostプロジェクト
- WebHostプロジェクト
Microsoft.NET.Sdk.Web
ASP.NET Core ランタイムにアクセスするために使用しますOutputType
に設定されていますLibrary
- ASP.NET Core ホスティングのすべてのコードが含まれています
- BlazorAppプロジェクトの参照
- BlazorAppプロジェクト
- 用途
Microsoft.NET.Sdk.BlazorWebAssembly
OutputType
に設定されてExe
います (デフォルト)- ブラウザーで実行するすべての Blazor Web アプリの要素が含まれています
- 用途
ここdotnet publish
でServerUIwwwroot
プロジェクトを実行すると、ユーザー インターフェイスを表示し、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
は発行動作に依存しないため、意図したとおりに動作します。