PCL と .NET Standard 両方に対応するライブラリって結局どう作ったらいいの?

Windows は最新以外を捨てればよい、のか!?
1
田淵 義人@エクセルソフト @ytabuchi

@amay077 @y_chu5 PCLのライブラリ作ってて思ったんですけど、「Net Standard 対応にする」のってどうやってやったんですか?プロジェクト設定をNet Standardにしてしまうと、今度PCLとしてビルドできなくなりませんか?(つまり、両対応のライブラリはどうやってるのかなぁ?という質問です)

2017-11-20 18:51:15
かむ @muak_x

@ytabuchi @amay077 @y_chu5 ライブラリ側をnetstandardにしてnuspecにpclとnetstandardの両方の記述して、それをパッケージしたらなんか利用側はpclでもnetstandardでもいけるようになりました。原理はわかりませんw

2017-11-20 18:55:41
ちゅうこ @y_chu5

@muak_x @ytabuchi @amay077 かむさんの方法で合ってるんじゃないかなと思っています.TargetFrameworksのところに対象にしたいフレームワークが記述してあって,両方同じ実装を見ている,みたいな状況かなぁと.

2017-11-20 19:18:15
amay077@mastodon.cloud @amay077

@muak_x @ytabuchi @y_chu5 かむさんと同意見ですね。lib側はnetstdに、nuspecは既存のPCL版にnetstdを追記する形でいけると思ってます。 github.com/xamarin/Xamari… もそんな感じ。

2017-11-20 19:19:12
ちゅうこ @y_chu5

@muak_x @ytabuchi @amay077 あっ,TargetFrameworksの話はcsprojでした失礼いたしました.

2017-11-20 19:20:55
かむ @muak_x

@amay077 @ytabuchi @y_chu5 お二人の意見を聞いて安心しました。いまいちあってるか不安だったのでw ありがとうございます!

2017-11-20 19:24:05
田淵 義人@エクセルソフト @ytabuchi

@muak_x @amay077 @y_chu5 なるほど。PCLで動いていたので、Lib側をNet Standardにしても同じコードなのでPCLでnusupecでパッケージ作っても動くと。なるほど。

2017-11-20 19:26:56
田淵 義人@エクセルソフト @ytabuchi

@muak_x @amay077 @y_chu5 ということは、新規でNetStandard、PCL両対応のライブラリを作りたかったら、NetStandardで作ってしまうとPCLで動かない可能性があるので、PCLで作ってから、NetStandardに変更しないといけないですよね。(差分が完全に分かっていればPCLでも絶対動くライブラリが作れる?w

2017-11-20 19:27:47
かむ @muak_x

@ytabuchi @amay077 @y_chu5 あんまり考えてませんでしたが、そういうことになりそうですね。となると何がnetstandard固有か知っておかないといけないですね。今はPCLしか知らないのでコピペ以外だと大丈夫ですがw

2017-11-20 19:35:02
ちゅうこ @y_chu5

@ytabuchi @muak_x @amay077 うーん,そのPCLの対象profileとstdのバージョンがいい具合に噛み合っていればそれでも良さそうですが,実際のところは github.com/yamachu/Mastod… こんな感じで対象フレームワークをわけて,ビルドしたアセンブリもわけてnuspecで出し分けすることが必要じゃないかなぁと思います.

2017-11-20 19:35:42
ちゅうこ @y_chu5

@ytabuchi @muak_x @amay077 自分が経験したとこだとPCLではないですが, github.com/yamachu/Mastod… こんな感じでSystem.Netとかを入れ直したりとかがあるので,両方でビルドしてそのフレームワークで動作するかとかは見たほうが良さそうです.実は足りないとかっていうのはあるので...

2017-11-20 19:38:21
NAKAMURA Atsushi @nuits_jp

@muak_x @ytabuchi @amay077 @y_chu5 いや、その解釈は少し問題があるんじゃないですかね。例えばProfile111はnetstd1.1をサポートしていますが、言い換えると含まれるクラスはProfile111≧netstd1.1だということです。Profile111で実装して、netstd1.1も並行提供しようとしたらできなかったという事もありえます docs.microsoft.com/ja-jp/dotnet/s…

2017-11-20 20:50:38
NAKAMURA Atsushi @nuits_jp

@muak_x @ytabuchi @amay077 @y_chu5 あとnetstdで実装可能で、そのバージョンが、提供したい範囲をサポートしているのであれば、別途PCLのライブラリを提供する意味ってあるんですかね?配布時に利用者側がPCLだった時に、netstd系のNuGetパッケージがバカスカ入ること以外のデメリットが分らんです。何かあるのかもしれませんが

2017-11-20 20:54:54
かむ @muak_x

@nuits_jp @ytabuchi @amay077 @y_chu5 あー、PCLの方が広い場合にダメですよね。確かに…

2017-11-20 20:55:40
田淵 義人@エクセルソフト @ytabuchi

@nuits_jp @muak_x @amay077 @y_chu5 おっと、個人的に2.0での話をしてました。その場合はほぼPCLより使えるクラスは多いはず!と。 WPFって1.3までしか使えないんでしたっけ?

2017-11-20 20:59:40
amay077@mastodon.cloud @amay077

@nuits_jp @muak_x @ytabuchi @y_chu5 Xamarin x .NET Standard Advent Calendar(田淵さんとにゅいさん)" の機運www twitter.com/amay077/status… は冗談として、現在のベストプラクティス書いてほしいですなあ🧐

2017-11-20 21:00:23
WFHあめい @amay077

"Xamarin x .NET Standard Advent Calendar(全部田淵さん)" の機運w / twitter.com/ytabuchi/statu…

2017-11-18 11:58:25
かむ @muak_x

@nuits_jp @ytabuchi @amay077 @y_chu5 なんかよくわからなくなってきましたw

2017-11-20 21:01:10
田淵 義人@エクセルソフト @ytabuchi

@amay077 @nuits_jp @muak_x @y_chu5 二日目ので頑張ってある程度カバーするようにしたいです!

2017-11-20 21:01:22
ちゅうこ @y_chu5

@muak_x @nuits_jp @ytabuchi @amay077 確かにPCLの方が広いと問題が起こりえますね.分けるある意味のメリットとしては.NETFrameworkで使った場合に(気のせいかもしれませんが)System.Net.Httpとかが古いバージョンのもので呼ばれてしまって挙動が違うことがあって,明示的に新しい方を使えよって指定できることですかね

2017-11-20 21:02:10
NAKAMURA Atsushi @nuits_jp

@ytabuchi @muak_x @amay077 @y_chu5 WPFはそのWPFアプリを.NET Frameworkのどのバージョンで実装するかによって決まりますね。「.NET Core x.0 SDK を使用しての」の意味が分かりませんが、4.6.1か4.6.2以上ならnetstd2.0を使えます

2017-11-20 21:02:11
ちゅうこ @y_chu5

@muak_x @nuits_jp @ytabuchi @amay077 その場合だと結局ビルド時に参照とかがstdのやつと変わってるので,さっきの議論の前提となっているただnuspecに書くだけで使える,という内容からは離れているので,なんというか別の話題になってしましますが()

2017-11-20 21:03:17
NAKAMURA Atsushi @nuits_jp

@muak_x @ytabuchi @amay077 @y_chu5 netstdは、ほんわか理解してるだけだし、ちゃんと書くとすごい紙面使いそうだし、突っ込み怖いし、あまり書きたくないですね~w田淵さんに任せた!w

2017-11-20 21:03:21
田淵 義人@エクセルソフト @ytabuchi

@nuits_jp @muak_x @amay077 @y_chu5 Forms限定でPCLのFormsプロジェクトでも使ってもらいたかったらPCLも用意しないとじゃないですか?その場合はプロファイルは何がいいのか?はどうなんだろう。259で動けば一番少ないので他でも使えるはず?

2017-11-20 21:03:54