編集可能

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

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

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする