koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

.NET Coreを弄っているとよくあること

使おうと思ったライブラリが .NET Framework 向けのみで .NET Core に対応していない。

これにつきる。気を付けましょう。例えば……

f:id:koudenpa:20180218173117p:plain

依存関係はないといったな? それは嘘だ。

f:id:koudenpa:20180218173145p:plain

パッケージ 'WindowsAzure.ServiceBus 4.2.1-preview' はプロジェクトのターゲット フレームワーク '.NETCoreApp,Version=v2.0' ではなく '.NETFramework,Version=v4.6.1' を使用して復元されました。このパッケージは、使用しているプロジェクトとの完全な互換性がない可能性があります。

ちなみに、下の方にいる WindowsAzure.Storage .NET Core 対応です。 同じ系統の名前なのに!

必ず、依存関係に対応の記載があるライブラリを使用する。 ServiceBus に関しては正解はこちら。

f:id:koudenpa:20180218174835p:plain

余談

僕はただSASトークンでServiceBus Topic の Subscription を作りたかっただけなんだ。

Microsoft.Azure.ServiceBus では、それができない。 というよりは、REST APIではSASトークンでの操作がサポートされていない、かな。多分。

Azure Service Bus 管理ライブラリ | Microsoft Docs

前提条件に、アプリケーションのADアプリとしての登録があって、怪しみは感じた。

(今回は単に自分が面倒だっただけなので、Azureを活用するアプリケーションはADアプリとして登録して、関連サービスを活用できるように認証したほうがいいです。そのADアプリにどんな認可を与えるか? でアプリケーションに対する権限を一元管理できて非常に便利です)

WindowsAzure.ServiceBus では、できる。こちらは、.NET(というよりはWindows)クライアントとして作成されているのだろう。 HTTP以外のプロトコルを使うサービスはライブラリ整備が大変そう。

azure-content-jajp/service-bus-create-topics-subscriptions.md at master · yuesan/azure-content-jajp · GitHub

それぞれのライブラリドキュメントは多分この辺り。

非常に迷いやすいと思うんだよね!