Article information
RevisionsShow article in Markdown
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

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

posted at

updated at

.NET Standard Class Library とおまけ

.NET Standard Class Library とおまけ

by masakura
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) ピザ付き


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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
Article information
RevisionsShow article in Markdown
Help us understand the problem. What are the problem?