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

@amay077 @y_chu5 PCLのライブラリ作ってて思ったんですけど、「Net Standard 対応にする」のってどうやってやったんですか?プロジェクト設定をNet Standardにしてしまうと、今度PCLとしてビルドできなくなりませんか?(つまり、両対応のライブラリはどうやってるのかなぁ?という質問です)
2017-11-20 18:51:15
@ytabuchi @amay077 @y_chu5 ライブラリ側をnetstandardにしてnuspecにpclとnetstandardの両方の記述して、それをパッケージしたらなんか利用側はpclでもnetstandardでもいけるようになりました。原理はわかりませんw
2017-11-20 18:55:41
@muak_x @ytabuchi @amay077 かむさんの方法で合ってるんじゃないかなと思っています.TargetFrameworksのところに対象にしたいフレームワークが記述してあって,両方同じ実装を見ている,みたいな状況かなぁと.
2017-11-20 19:18:15
@muak_x @ytabuchi @y_chu5 かむさんと同意見ですね。lib側はnetstdに、nuspecは既存のPCL版にnetstdを追記する形でいけると思ってます。 github.com/xamarin/Xamari… もそんな感じ。
2017-11-20 19:19:12
@muak_x @ytabuchi @amay077 あっ,TargetFrameworksの話はcsprojでした失礼いたしました.
2017-11-20 19:20:55
@amay077 @ytabuchi @y_chu5 お二人の意見を聞いて安心しました。いまいちあってるか不安だったのでw ありがとうございます!
2017-11-20 19:24:05
@muak_x @amay077 @y_chu5 なるほど。PCLで動いていたので、Lib側をNet Standardにしても同じコードなのでPCLでnusupecでパッケージ作っても動くと。なるほど。
2017-11-20 19:26:56
@muak_x @amay077 @y_chu5 ということは、新規でNetStandard、PCL両対応のライブラリを作りたかったら、NetStandardで作ってしまうとPCLで動かない可能性があるので、PCLで作ってから、NetStandardに変更しないといけないですよね。(差分が完全に分かっていればPCLでも絶対動くライブラリが作れる?w
2017-11-20 19:27:47
@ytabuchi @amay077 @y_chu5 あんまり考えてませんでしたが、そういうことになりそうですね。となると何がnetstandard固有か知っておかないといけないですね。今はPCLしか知らないのでコピペ以外だと大丈夫ですがw
2017-11-20 19:35:02
@ytabuchi @muak_x @amay077 うーん,そのPCLの対象profileとstdのバージョンがいい具合に噛み合っていればそれでも良さそうですが,実際のところは github.com/yamachu/Mastod… こんな感じで対象フレームワークをわけて,ビルドしたアセンブリもわけてnuspecで出し分けすることが必要じゃないかなぁと思います.
2017-11-20 19:35:42
@ytabuchi @muak_x @amay077 自分が経験したとこだとPCLではないですが, github.com/yamachu/Mastod… こんな感じでhttps://t.co/2SNScmF3ijとかを入れ直したりとかがあるので,両方でビルドしてそのフレームワークで動作するかとかは見たほうが良さそうです.実は足りないとかっていうのはあるので...
2017-11-20 19:38:21
@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
@muak_x @ytabuchi @amay077 @y_chu5 あとnetstdで実装可能で、そのバージョンが、提供したい範囲をサポートしているのであれば、別途PCLのライブラリを提供する意味ってあるんですかね?配布時に利用者側がPCLだった時に、netstd系のNuGetパッケージがバカスカ入ること以外のデメリットが分らんです。何かあるのかもしれませんが
2017-11-20 20:54:54
@nuits_jp @muak_x @amay077 @y_chu5 おっと、個人的に2.0での話をしてました。その場合はほぼPCLより使えるクラスは多いはず!と。 WPFって1.3までしか使えないんでしたっけ?
2017-11-20 20:59:40
@nuits_jp @muak_x @ytabuchi @y_chu5 Xamarin x .NET Standard Advent Calendar(田淵さんとにゅいさん)" の機運www twitter.com/amay077/status… は冗談として、現在のベストプラクティス書いてほしいですなあ🧐
2017-11-20 21:00:23
@amay077 @nuits_jp @muak_x @y_chu5 二日目ので頑張ってある程度カバーするようにしたいです!
2017-11-20 21:01:22
@muak_x @nuits_jp @ytabuchi @amay077 確かにPCLの方が広いと問題が起こりえますね.分けるある意味のメリットとしては.NETFrameworkで使った場合に(気のせいかもしれませんが)https://t.co/2SNScmF3ij.Httpとかが古いバージョンのもので呼ばれてしまって挙動が違うことがあって,明示的に新しい方を使えよって指定できることですかね
2017-11-20 21:02:10
@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
@muak_x @nuits_jp @ytabuchi @amay077 その場合だと結局ビルド時に参照とかがstdのやつと変わってるので,さっきの議論の前提となっているただnuspecに書くだけで使える,という内容からは離れているので,なんというか別の話題になってしましますが()
2017-11-20 21:03:17
@muak_x @ytabuchi @amay077 @y_chu5 netstdは、ほんわか理解してるだけだし、ちゃんと書くとすごい紙面使いそうだし、突っ込み怖いし、あまり書きたくないですね~w田淵さんに任せた!w
2017-11-20 21:03:21
@nuits_jp @muak_x @amay077 @y_chu5 Forms限定でPCLのFormsプロジェクトでも使ってもらいたかったらPCLも用意しないとじゃないですか?その場合はプロファイルは何がいいのか?はどうなんだろう。259で動けば一番少ないので他でも使えるはず?
2017-11-20 21:03:54