This post is Private. Only a writer or those who know its URL can access this post.

.NET Standard Class Library とおまけ

自己紹介


自己紹介

  • なまえ - 政倉 智 (まさくら とも)
  • 所属 - codeArts 株式会社
  • 所属 - html5j 鹿児島
  • 趣味 - バイク・モータースポーツ見たり

I 💛 LOVE C♯


C# 1.0 を知った時に、この言語と心中する! と決めました


I 💛 LOVE JetBrains


image.png

https://qiita.com/masakura/items/85c59e60cac7f0638c1b


アジェンダ

  • .NET Standard Class Library
  • 鹿児島の .NET の勉強会

.NET Standard Class Library


.NET Core が出てから 2 年経ちました!


移行を考えていますか?


でも


書き直すのだるいですよね


既存のプロジェクトをそのまま .NET Core 化する手もあるんですが


修正はやっぱり必要です


そんなあなたのための


.NET Standard Class Library!


image.png


.NET Standard Class Library とは?

.NET Framework と .NET Core の両方から利用できるクラスライブラリ

image.png


.NET Standaed Class Library とは?

  • ASP.NET Core や Entity Framework Core もこれで提供
  • .NET Standard で規定された API しか使えません

.NET Standard って?

  • .NET (Fx / Mono / Core) が実装すべき API の仕様

Untitled(9)(1).png


.NET Standard って?

  • 以前は API が少なすぎて使いづらかった
    • System.Drawing とか System.Transactions のサポートが弱い
  • .NET Standard 2.0 から API が大幅に強化された
    • .NET Framework 4.6.1 以降
    • .NET Core 2.0 以降
    • Mono 5.4 以降

329598.png


.NET Standard という名前のクラスライブラリがあるわけではない


あくまで API 仕様


.NET Fx と .NET Core で実装が違う


.NET Standard の String 型は .NET Fx と .NET Core の型にマップされている

Untitled(9)(2).png


public static void Test1() {
  var uri = new Uri("http://example.jp/?u=http%3A%2F%2Fexample.jp");
    Console.WriteLine(uri.ToString());
}

プラットフォームで結果が異なります。

  • .NET Fx 4.7.1 - http://example.jp/?u=http:%2F%2Fexample.jp
  • .NET Core 2.0 - http://example.jp/?u=http:%2F%2Fexample.jp
  • .NET Core 2.1 - http://example.jp/?u=http%3A%2F%2Fexample.jp

public static void Test2() {
  var bytes = new byte[] {0x8e, 0xad, 0x8e, 0x99, 0x93, 0x87};
  var encoding = Encoding.GetEncoding(932);
  Console.WriteLine(encoding.GetString(bytes));
}

プラットフォームで結果が異なります。

  • .NET Fx 4.7.1 - 鹿児島
  • .NET Core 2.0 - System.NotSupportedException
  • .NET Core 2.1 - System.NotSupportedException

.NET Core の実装には CP932 (≒ Shift_JIS) のサポートはありません


でも、両対応なライブラリを書けるのは便利なので


新しく書く分からだけでも


.NET Standard Class Library 化を!


鹿児島の .NET 勉強会


自分は C#/.NET が大好きです


残念ながら、鹿児島にはコミュニティがありません


こんなにあるのにねぇ


というわけで...


かごべんという、無属性コミュニティのなかでやってます


過去の .NET 勉強会


こんな感じですね!

image.png


かごべんでは、毎月テーマを変えてやってます

image.png


他でやらないことをやってます! (一部紹介)


かごもく #9 番外編 - 20 世紀のコンピューター

image.png


かごもく #9 番外編 - 20 世紀のコンピューター

image.png


かごもく #9 番外編 - 20 世紀のコンピューター

image.png


たまには鹿児島にも遊びに来てください!

image.png

かごもく #13 Better C/C++ (Go / Rust) ピザ付き


ご清聴ありがとうございました!

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.