Movatterモバイル変換


[0]ホーム

URL:


信之 岩永, profile picture
Uploaded by信之 岩永
PPTX, PDF3,075 views

Modern .NET

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

Embed presentation

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

Recommended

PPTX
今から始める、Windows 10&新.NETへの移行戦略
PPTX
C# 8.0 非同期ストリーム
PPTX
Net fringejp2016
PPTX
Unityで使える C# 6.0~と .NET 4.6
PPTX
C# design note sep 2014
PPTX
.NET vNext
PPTX
dotnetconfJP2017_netcore2
PPTX
Deep Dive C# 6.0
PPTX
.NET Core とマルチプラットフォーム
 
PDF
.NET Core時代のCI/CD
PPTX
広がる .Net
PPTX
C#の書き方
PDF
Pythonで始めるWebアプリケーション開発
PDF
今日からできる!簡単 .NET 高速化 Tips
PDF
動的なILの生成と編集
PDF
SignalRブートキャンプ
PPTX
Orange Cube 自社フレームワーク 2015/3
PDF
Bluetoothでgo!
PPTX
C#/.NETがやっていること 第二版
PPTX
C#言語機能の作り方
PDF
基礎からのCode Contracts
PDF
20201127 .NET 5
PDF
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
PPTX
Golang tokyo #7 qtpm
PDF
JavaScript Tips 2015(PDF 版)
 
PDF
.NET Coreから概観する.NETのOSSへの取り組み
PPTX
.NET Core 2.x 時代の C#
PPTX
(ゲームじゃない方の)switchで遊びたい話
PPTX
今から始める、Windows 10&新.NETへの移行戦略
PPTX
C#や.NET Frameworkがやっていること

More Related Content

PPTX
今から始める、Windows 10&新.NETへの移行戦略
PPTX
C# 8.0 非同期ストリーム
PPTX
Net fringejp2016
PPTX
Unityで使える C# 6.0~と .NET 4.6
PPTX
C# design note sep 2014
PPTX
.NET vNext
PPTX
dotnetconfJP2017_netcore2
PPTX
Deep Dive C# 6.0
今から始める、Windows 10&新.NETへの移行戦略
C# 8.0 非同期ストリーム
Net fringejp2016
Unityで使える C# 6.0~と .NET 4.6
C# design note sep 2014
.NET vNext
dotnetconfJP2017_netcore2
Deep Dive C# 6.0

What's hot

PPTX
.NET Core とマルチプラットフォーム
 
PDF
.NET Core時代のCI/CD
PPTX
広がる .Net
PPTX
C#の書き方
PDF
Pythonで始めるWebアプリケーション開発
PDF
今日からできる!簡単 .NET 高速化 Tips
PDF
動的なILの生成と編集
PDF
SignalRブートキャンプ
PPTX
Orange Cube 自社フレームワーク 2015/3
PDF
Bluetoothでgo!
PPTX
C#/.NETがやっていること 第二版
PPTX
C#言語機能の作り方
PDF
基礎からのCode Contracts
PDF
20201127 .NET 5
PDF
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
PPTX
Golang tokyo #7 qtpm
PDF
JavaScript Tips 2015(PDF 版)
 
PDF
.NET Coreから概観する.NETのOSSへの取り組み
PPTX
.NET Core 2.x 時代の C#
PPTX
(ゲームじゃない方の)switchで遊びたい話
.NET Core とマルチプラットフォーム
 
.NET Core時代のCI/CD
広がる .Net
C#の書き方
Pythonで始めるWebアプリケーション開発
今日からできる!簡単 .NET 高速化 Tips
動的なILの生成と編集
SignalRブートキャンプ
Orange Cube 自社フレームワーク 2015/3
Bluetoothでgo!
C#/.NETがやっていること 第二版
C#言語機能の作り方
基礎からのCode Contracts
20201127 .NET 5
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
Golang tokyo #7 qtpm
JavaScript Tips 2015(PDF 版)
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Core 2.x 時代の C#
(ゲームじゃない方の)switchで遊びたい話

Viewers also liked

PPTX
今から始める、Windows 10&新.NETへの移行戦略
PPTX
C#や.NET Frameworkがやっていること
PPTX
.NET Compiler Platform
PPTX
Coding Interview
PDF
How to make the Fastest C# Serializer, In the case of ZeroFormatter
PPTX
Keep yourself up to date
PDF
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
PDF
DeclarativeSql
PPTX
Msgpack cli-tech-aid-2013
PDF
Universal Appとは? -デバイスに依存しないアプリケーション開発-
PDF
酒の肴はC# vNext
PDF
Friendly
PDF
Rust v1.0 release celebration party
PPTX
Code Contracts in .NET 4
PDF
Async History in .NET
PDF
Rust 1.0 Release記念祝賀 - Rustのドキュメントを少し訳してみた
PDF
WPF Interoperability
PPTX
それっぽく、適当に
PDF
Sevens Algorithm
PPTX
Overview of the .Net Collection Framework and Immutable Collections
今から始める、Windows 10&新.NETへの移行戦略
C#や.NET Frameworkがやっていること
.NET Compiler Platform
Coding Interview
How to make the Fastest C# Serializer, In the case of ZeroFormatter
Keep yourself up to date
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
DeclarativeSql
Msgpack cli-tech-aid-2013
Universal Appとは? -デバイスに依存しないアプリケーション開発-
酒の肴はC# vNext
Friendly
Rust v1.0 release celebration party
Code Contracts in .NET 4
Async History in .NET
Rust 1.0 Release記念祝賀 - Rustのドキュメントを少し訳してみた
WPF Interoperability
それっぽく、適当に
Sevens Algorithm
Overview of the .Net Collection Framework and Immutable Collections

Similar to Modern .NET

PDF
.NET Coreとツール類の今
PDF
.NET 5 勉強会 ~.NET Framework から .NET へ~
PDF
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
PDF
Introduction to VSCode
PDF
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~
PDF
.NET Core 1.0
PPTX
Dot netcore multiplatform 2
 
PDF
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
PDF
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
PDF
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
PPTX
CLI と BCL
 
PDF
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
PDF
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
PDF
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
PDF
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
PDF
The Next Generation for C# Developers
PDF
Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~
PDF
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
PDF
.NET の今とミライ (.NET Conf 2018 Japan Keynote)
PPTX
2014 08-30 life with roslyn
.NET Coreとツール類の今
.NET 5 勉強会 ~.NET Framework から .NET へ~
DEV-002_.NET Core/ASP.NET Core が実現するクロスプラットフォーム .NET の今と未来
Introduction to VSCode
Linux & Mac OS でも動く! ~ クロスプラットフォーム対応に見る ASP.NET Core 5 の可能性 ~
.NET Core 1.0
Dot netcore multiplatform 2
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
CLI と BCL
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
.NET Core と Container, そして Azure Web Apps on Linux による Web アプリ開発最前線
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Conf 2017 Japan Keynote ".NET Everywhere!"
The Next Generation for C# Developers
Empower Every App, Every Developer ~ 統合開発プラットフォーム Visual Studio の進化 ~
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
.NET の今とミライ (.NET Conf 2018 Japan Keynote)
2014 08-30 life with roslyn

More from 信之 岩永

PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0)
PPTX
C# 7.2 with .NET Core 2.1
PPTX
C# 9.0 / .NET 5.0
PPTX
プログラミング .NET Framework 第4版
PPTX
C#とILとネイティブと
PPTX
async/await のしくみ
PPTX
非同期処理の基礎
PPTX
Unicode文字列処理
PPTX
C# コンパイラーの書き換え作業の話
PPTX
C# 8.0 null許容参照型
PPTX
C#マスコット(公開用)
PPTX
Anders Hejlsberg Q & A
PPTX
YouTube ライブ配信するようになった話
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 7.2 with .NET Core 2.1
C# 9.0 / .NET 5.0
プログラミング .NET Framework 第4版
C#とILとネイティブと
async/await のしくみ
非同期処理の基礎
Unicode文字列処理
C# コンパイラーの書き換え作業の話
C# 8.0 null許容参照型
C#マスコット(公開用)
Anders Hejlsberg Q & A
YouTube ライブ配信するようになった話

Modern .NET

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

Editor's Notes

  • #2 https://github.com/ufcpp/UfcppSample/
  • #3 「たぶん」とつく理由も最後で話すけども
  • #5 予想ではたぶん、Windows 10関連の部分だけ前倒しリリース
  • #7 CoreCLR/CoreFXに加えて、これから話すxproj, project.json, dotnetターゲットの辺り、あんまりはっきりと区別のある資料全然なくて。割りかし混乱気味。というか、作ってる人ら的にも今整理の真っ最中な予感あり
  • #9 実装が違っても、規約的に互換性ありなら同じコード・同じDLLでプログラムが動く
  • #19 .NET 4.5ダメっぽいよね?たぶん。
  • #22 Windows 10の前倒しリリースにより、Visual Studioチームが悲鳴あげてそう
  • #31 思うに、UWPもこれまでの判断基準でいうとベータなんだけど、Windows 10出した手前大々的にベータと言えないのかな?

[8]ページ先頭

©2009-2025 Movatter.jp