Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Modern .NET

2.553 visualizaciones

Publicado el

2015/8/8
C#UG&codeseek勉強会
「Visual Studio 2015リリース記念」
にて発表

Publicado en: Tecnología
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... (Unlimited)
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... (Unlimited)
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • ACCESS that WEBSITE Over for All Ebooks (Unlimited) ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... DOWNLOAD FULL EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M }
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

Modern .NET

  1. 1. Modern .NET C# とともに祝15周年 岩永信之
  2. 2. Modern .NET • .NET 2015と呼ばれてる一連の製品 既存技術系 2015世代系 .NET .NET Framework 4.6 .NET Core 5 • ASP.NET 5 • "Modern" PCL‡ • UWP† プロジェクト形式 csproj/vbproj xproj パッケージ参照 package.config project.json (NuGet v3) ターゲット バージョン net45, netcore45, MonoAndroid10, ... dotnet beta RTM beta † Portable Class Library ‡ Universal Windows Platform beta beta RTM beta • .NET CoreとかASP.NET 5はまだベータ • 全部ベータだと思ってたら一部RTMだった たぶん
  3. 3. 今日話すこと 既存技術系 2015世代系 .NET .NET Framework 4.6 .NET Core 5 • ASP.NET 5 • "Modern" PCL‡ • UWP† プロジェクト形式 csproj/vbproj xproj パッケージ参照 package.config project.json (NuGet v3) ターゲット バージョン net45, netcore45, MonoAndroid10, ... dotnet beta RTM beta † Portable Class Library ‡ Universal Windows Platform beta beta RTM beta • 何がRTMで何がベータかわかるように • RTMな部分を少し詳細に説明 • .NET 2015と呼ばれてる一連の製品
  4. 4. リリース状況 • .NET 2015と呼ばれてる一連の製品 既存技術系 2015世代系 .NET .NET Framework 4.6 .NET Core 5 • ASP.NET 5 • "Modern" PCL‡ • UWP† プロジェクト形式 csproj/vbproj xproj パッケージ参照 package.config project.json (NuGet v3) ターゲット バージョン net45, netcore45, MonoAndroid10, ... dotnet beta RTM beta † Portable Class Library ‡ Universal Windows Platform beta beta RTM beta 赤枠 Visual Studio 2015を入れると ベータ版テンプレートが入ってる 青枠 Visual Studio Tools for Windowsを入れる とRTMテンプレートが入ってる
  5. 5. .NET Core • .NET Frameworkを再実装 • オープンソース • クロスプラットフォーム • modular • 秋以降にRTMしそう? • 今のところ63%くらいっぽい† beta 要するに • Win32依存部分の切り離し • mscorlibの分解 • 長期保守に耐えうる造りに変更 † https://github.com/dotnet/corefx-progress
  6. 6. CoreCLRとCoreFX • 「.NET」って言葉が含む2つの意味 GitHubリポジトリ的に も別れてたり ランタイム 標準ライブラリ 何ものか • ILをJITして実行 • GCとかの実行時処理 • 規約(どのクラスをどの プラットフォームで使えるか) • その実装 .NET Core CoreCLR† CoreFX‡beta beta † https://github.com/dotnet/coreclr ‡ https://github.com/dotnet/corefx GitHubリポジトリ的に も別れてたり • 規約的にはWindowsストア アプリ向け.NETと同系統 • 実装は新規(mscorlibを分解 + クロスプラットフォーム化) 同世代の別技術に .NET Nativeあり RTM
  7. 7. Modularアーキテクチャ Collections Threading Reflection Linq Net IO … Modern (.NET Core) Legacy (.NET Framework) mscorlib※ ※正確にはいくつかのクラスはSystem.dllとかに分かれてるけど、それでもかなりでかい単位 • 機能単位でアセンブリを分割 • 必要な時に必要な分だけ参照 して使う • 標準ライブラリも個別・ NuGet配布 beta 既存 • インストーラーで一括インス トール
  8. 8. Modularアーキテクチャ(移行期があった) Collections Threading Reflection Linq Net IO … Modern (.NET Core) Legacy (.NET 4まで) mscorlib Collections Threading Reflection Linq Net IO … Facades (.NET 4.5, Win8) mscorlib 実体はこれまでのmscorlibの バージョン アップ Fasade(見せかけ)アセンブリ 型の「転送」だけする 本当はmscorlibで実装してるものを 個別のライブラリに実装しているように見せる beta 既存 既存 転送 (移行期) (.NET 4.6と)互換
  9. 9. 互換性 • ランタイムに関して • 仕様は一緒で別実装 • 標準ライブラリの規約に関して • Facadesがある※/.NET 4.5時代からFacadesを用意してた Core機能版 Full機能版 Windows 8世代 ストア アプリ .NET Framework 4.5 Windows 10世代 .NET Core 5 UWP† .NET Framework 4.6 おおむね上位互換 (Full = Core + Win32) バージョン アップ RTM beta 既存 既存 RTM互換 †Universal Windows Platform ※ NuGet v3はmscorlibへの転送を自動的にやってくれるみたい
  10. 10. .NET Core系プロジェクト • ASP.NET 5 • "Modern PCL" • Universal Windows Platform (UWP) beta RTM beta .NET Core .NET Framework※ 両対応 • デバッグ時にはCoreCLR上で普通に実行 • 配布前に.NET Nativeでネイティブ化 • 標準ライブラリ規約的には.NET Core .NET Core規約で 作っておけば どこでも動く ※ 現時点では(たぶん今後も) .NET Framework 4.5以降のみ RTM beta
  11. 11. xproj • xproj: プロジェクトの新しいファイル形式 • XMLでソースコード管理するのやめました • 基本、フォルダー以下にある全ソースコードがビルド対象 • 除外したいものは、project.jsonの中に除外設定を書く • ASP.NET 5とModern PCLはこれ • csproj/vbproj • ビルド対象にしたい.cs/.vbソースコードや、アセンブリ参照設定を 1つ1つXMLで記述 beta beta beta 既存
  12. 12. project.json (xproj系) • xprojはほぼ空 • プロジェクト設定はproject.jsonに書く • これまでnuspecに書いてたようなパッケージ情報 • 依存するライブラリの情報 • これを使えるプロジェクトのタイプ • ASP.NET 5 • Modern PCL beta beta beta
  13. 13. project.json (NuGet v3) • csproj/vbprojでもproject.jsonを使うように • xprojでのproject.jsonのサブセット • 依存ライブラリに関する情報だけ • package.config (NuGet v2まで) の置き換え • これを使えるプロジェクトのタイプ • UWP • (未保証でよければ)その他なんでも • プロジェクト テンプレートにはなってなくて 手動でpackage.configをproject.jsonに差し替えたら動く (要プロジェクト再読み込み) RTM RTM 既存
  14. 14. project.json (NuGet v3)の中身 • csproj中で動かす 最低ラインの書き方 • runtimesとかを抜くと 意味不明のビルド エラー が発生 { "frameworks": { "net35": {} }, "runtimes": { "win": {}, "win-anycpu": {} }, "dependencies": { "Newtonsoft.Json": "7.0.1" } } ターゲット フレームワーク ターゲットOS、CPU 依存ライブラリ一覧を "パッケージ名": "バージョン" という形式で並べる
  15. 15. NuGet v3でのパッケージ管理(参照側) • JSON (project.json)で管理するようになった • ソリューション単位でのキャッシュ管理をやめた • 旧: ソリューションの下に「packages」フォルダー • 新: ユーザー フォルダーの下に「.nuget/packages」フォルダー • csproj/vbproj汚染しなくなった • hint pathとかもなくなって、1つのプロジェクトを複数のソリューショ ンから参照してもパスが狂って困る問題なくなった • 多段の依存管理が楽になった • 直接参照しているものだけがproject.jsonに入る • アンインストールやアップグレード作業がだいぶ楽
  16. 16. NuGet v3でのパッケージ管理(作成側) • install/uninstall.ps1が働かなくなった • プロジェクト単位でインストールされない • init.ps1は動く • コンテンツ(contentsフォルダー)を持てない • analyzersフォルダーにDLL入れるだけでアナライザーの参照でき るように
  17. 17. "dotnet"ターゲット • 今まで: ターゲットごとに「プロファイル」が分かれてた • デスクトップ向けならnet35, net45, net46, ... • ストア アプリ向けならwp7, wp71, win8, win81, netcore45, ... • Xamarin向けならMonoTouch10, MonoAndroid10, ... • 新世代: "dotnet" 1個だけに! • 「どのライブラリに依存してるか」だけで、どのターゲットで動くか を自動判別 • ターゲットを気にして作るのは、標準ライブラリとかXamarinみたいな ものだけ RTM ※ ※ dotnetターゲット(NuGet v3が必要)が使えて、RTMかつ保証があるのは現状ではUWPだけ 未保証・ベータ込みでも、.NET Framework 4.6/.NET Core 5以降のみ
  18. 18. "Modern PCL" • xprojなライブラリ プロジェクト • 自動的にdotnetターゲットなnupkgを作ってくれる このテンプレートがModern PCL beta
  19. 19. 新旧世代 • 同世代技術・新技術の方がサポート早いのは当然 • 世代的には .NET Core = xproj = project.json = dotnetターゲット • 混同されがち(ひとくくりに.NET 2015とか.NET vNextとか) • でも、いくらか新旧混在可能 • .NET Core/.NET Framework共用 • Facadesがある • xprojで作ったアプリや、dotnetターゲットのライブラリは .NET Framework 4.6/.NET Core 5両対応 • NuGet v3で、project.jsonをcsproj/vbprojからも使える
  20. 20. まとめ • 新旧はっきりわかれてるけど、いくらか混在利用可能 • .NET Framework ⇔ .NET Core • ASP.NET 5, "Modern PCL", UWP • csproj/vbproj ⇔ xproj • package.config ⇔ project.json (NuGet v3) • net45, win81, ... ⇔ dotnet • ぶっちゃけていうと • 新しい方が使えると結構幸せ • 移行期に当たる今はたぶん余計に苦労する • UWPに合わせてNuGet v3だけ前倒しでRTMした雰囲気 RTM RTM
  21. 21. RTM状況、実はよくわからず ここからおまけ
  22. 22. ASP.NET系 • xproj系プロジェクト = ASP.NET 5系チームによる開発 「Web」カテゴリー内に 「コンソール アプリ」って何なんだよ xproj xproj xproj beta beta beta
  23. 23. 「プレビュー」の文字 • ASP.NET 5は、プレビューのところにプレビューの文字あり 「プレビュー」とは 書かれてないけども さっきの
  24. 24. やっぱり「beta」って入ってる • DNX SDKバージョン 作成 プロパティ 「プレビュー」とは 書かれてないけども やっぱベータなの?
  25. 25. ASP.NET系 → UWP系 • project.json = ASP.NET系 → UWP系 ASP.NET 5 xproj beta UWP csproj RTM xprojでは、プロジェクト 設定全般を書く だから「project.json」 サブセット パッケージ依存管理だけ をproject.jsonに書く • VS Tools for Windows • VS2015 RTM (7/20)よりも 後(7/29)にリリース • csproj+project.jsonを使うには これが必須 • UWP用?
  26. 26. csproj+project.jsonはUWP系(1) • 任意のプロジェクト タイプに対するproject.json 手作業で • packages.config削除 • project.json追加 • プロジェクトをリロード csproj packages.config 既存 csproj project.json RTM ? UWP以外であっても、VS Tools for Windowsのインストールが必須 手作業必須なのは、 • 単にUWP以外の対応が間に合ってな いのか? • まだやって欲しくないから テンプレートを用意してないのか?
  27. 27. csproj+project.jsonはUWP系(2) • project.jsonからのパッケージの復元 • csproj+project.jsonなプロジェクトのビルド NuGetパッケージ マネージャーを3.1以上にすればできる VS Tools for Windowsが必要 (UWP以外のプロジェクト タイプであっても) (同時にNuGetの方も更新されてた) (7/31にリリースしてた) (7/29にリリース)
  28. 28. .NET Coreはベータ(1) • CoreCLRにもCoreFXにも「beta」の文字
  29. 29. .NET Coreはベータ(2) • UWPはRTM .NET Core CoreCLR .NET Native ASP.NET 5 UWP beta beta わかる CoreFX beta .NET Framework 4.6 選べる RTM RTM Debug Release RTM 依存先がベータ?!

×