ライブラリを.NET StandardにしたらDataContractがないって言われたとき
プログラミングしな過ぎて久々にプロジェクトを開いたら理解ができなかった
Portable Class Libraryでライブラリを作っていたのですが、最近は.NET Standard Libraryとかいうよさげなバージョンがあるそうです
というのをC#でググるサイトのスライドを見て知りました
ufcpp.net
上の一番最初のスライドですね。他も面白いのでついでに見ましょう
さて、私の手元にも無駄にPortable Class Libraryで作られているものがあるので.NET Standardにするか~と思ったのですが(どこで使うのか不明)、.NET Standard 1.1に変えてみたところエラーだらけに
こんな感じのコードだったのですがどの辺が悪いのかすぐに理解できなかった
[DataContract] public class Team { [DataMember(Name = "id")] public string Id { get; set; } [DataMember(Name = "name")] public string Name { get; set; } [DataMember(Name = "domain")] public string Domain { get; set; } [DataMember(Name = "email_domain")] public string EmailDomain{ get; set; } [DataMember(Name = "icon")] public Icons Icon { get; set; } }
まあ普通のDataContractなクラスですね
これのDataContractAttributeとDataMemberAttributeがないと怒られるわけですよ。なぜPCLで書けるコードが.NET Standardで書けないんだ、という感じです
と思って調べてたらこんなNuGetパッケージがありました。
NuGet Gallery | System.Runtime.Serialization.Primitives 4.1.1
ここに.NET Standard 1.0以上に対応すると書いてあるので、まあつまるところ足りなかったらこれを入れろということなのでしょう。むしろどこでそれを察知すればよかったんだ…
System.Runtime.Serialization.Jsonもないのでおそらく使用率が低い標準ライブラリについて使う場合はNuGetから落とす必要があるようです。一歩学習したぞ
ってだけの記事です。誰向けなんだ
ようやくプログラミング欲が復活してきたのでいろいろ進めたいところ
そろそろ埃をかぶってきたアプリケーションとか世に送り出したい…
この辺で