LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

.NET Standard Class Library とおまけ

Last updated at Posted at 2018-09-28
1 / 47

自己紹介


自己紹介

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

I 💛 LOVE C♯


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


I 💛 LOVE JetBrains


image.png


アジェンダ

  • .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) ピザ付き


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

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up