Microsoft.AspNetCore.Appメタパッケージを利用してライブラリーを作成する際のProject Sdkについて見てみる

Microsoft.AspNetCore.Appメタパッケージを使いたい

Webゾーンに関わるライブラリーを書く場合、Microsoft.AspNetCore.Appメタパッケージを参照したくなります。 .NET Coreの.csprojを編集するときに、Project SdkMicrosoft.NET.Sdk.Webに設定するとDefaultで

Microsoft.AspNetCore.App

Microsoft.NetCore.App

の二つがFramework参照されます。

.csprojの中のProject Sdkはこんな感じ

<Project Sdk="Microsoft.NET.Sdk.Web">

すると、Framework参照はされていますが、Projectのプロパティのうち、アプリケーション-出力の種類 がコンソールアプリケーションになっています。

f:id:CreatioVitae:20191015191252p:plain

「おや?」と思い、クラスライブラリーに変更し、今度はパッケージ-ビルドでNugetパッケージを生成 にチェックをつけてビルドしてみます。

f:id:CreatioVitae:20191015191521p:plain

「おや?.nupkgが生成されないぞ?」

.csprojの中のProject SdkMicrosoft.NET.Sdkに戻す

<Project Sdk="Microsoft.NET.Sdk">

これだけだと、Framework参照が足りないので、Microsoft.AspNetCore.Appを(2.2.7なんだよなーと思いながら)パッケージ参照に追加します。

Framework参照にしろよ!って怒られる

f:id:CreatioVitae:20191015192612p:plain

FrameworkReferenceに書き換える

<ItemGroup>
  <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

まとめ

Microsoft.AspNetCore.Appメタパッケージを利用してのライブラリーを書くときは、Project Sdkを変更するのではなく、FrameworkReferenceを追加しましょう。(意外と悩みました。)