Microsoft.AspNetCore.Appメタパッケージを利用してライブラリーを作成する際のProject Sdkについて見てみる
Microsoft.AspNetCore.Appメタパッケージを使いたい
Webゾーンに関わるライブラリーを書く場合、Microsoft.AspNetCore.Appメタパッケージを参照したくなります。 .NET Coreの.csprojを編集するときに、Project SdkをMicrosoft.NET.Sdk.Webに設定するとDefaultで
Microsoft.AspNetCore.App
Microsoft.NetCore.App
の二つがFramework参照されます。
.csprojの中のProject Sdkはこんな感じ
<Project Sdk="Microsoft.NET.Sdk.Web">
すると、Framework参照はされていますが、Projectのプロパティのうち、アプリケーション-出力の種類 がコンソールアプリケーションになっています。
「おや?」と思い、クラスライブラリーに変更し、今度はパッケージ-ビルドでNugetパッケージを生成 にチェックをつけてビルドしてみます。
「おや?.nupkgが生成されないぞ?」
.csprojの中のProject SdkをMicrosoft.NET.Sdkに戻す
<Project Sdk="Microsoft.NET.Sdk">
これだけだと、Framework参照が足りないので、Microsoft.AspNetCore.Appを(2.2.7なんだよなーと思いながら)パッケージ参照に追加します。
Framework参照にしろよ!って怒られる
FrameworkReferenceに書き換える
<ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup>
まとめ
Microsoft.AspNetCore.Appメタパッケージを利用してのライブラリーを書くときは、Project Sdkを変更するのではなく、FrameworkReferenceを追加しましょう。(意外と悩みました。)