SlideShare a Scribd company logo
Modern .NET
C# とともに祝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, ...
dotnet
beta
RTM
beta
† Portable Class Library
‡ Universal Windows Platform
beta
beta
RTM
beta
• .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, ...
dotnet
beta
RTM
beta
† Portable Class Library
‡ Universal Windows Platform
beta
beta
RTM
beta
• 何が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, ...
dotnet
beta
RTM
beta
† Portable Class Library
‡ Universal Windows Platform
beta
beta
RTM
beta
赤枠
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/corefx
GitHubリポジトリ的に
も別れてたり
• 規約的にはWindowsストア アプリ向け.NETと同系統
• 実装は新規(mscorlibを分解 + クロスプラットフォーム化)
同世代の別技術に
.NET Nativeあり
RTM
Modularアーキテクチャ
Collections
Threading
Reflection
Linq
Net
IO …
Modern
(.NET Core)
Legacy
(.NET Framework) mscorlib※
※正確にはいくつかのクラスはSystem.dllとかに分かれてるけど、それでもかなりでかい単位
• 機能単位でアセンブリを分割
• 必要な時に必要な分だけ参照
して使う
• 標準ライブラリも個別・
NuGet配布
beta
既存
• インストーラーで一括インス
トール
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と)互換
互換性
• ランタイムに関して
• 仕様は一緒で別実装
• 標準ライブラリの規約に関して
• 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への転送を自動的にやってくれるみたい
.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
xproj
• xproj: プロジェクトの新しいファイル形式
• XMLでソースコード管理するのやめました
• 基本、フォルダー以下にある全ソースコードがビルド対象
• 除外したいものは、project.jsonの中に除外設定を書く
• ASP.NET 5とModern PCLはこれ
• csproj/vbproj
• ビルド対象にしたい.cs/.vbソースコードや、アセンブリ参照設定を
1つ1つXMLで記述
beta
beta beta
既存
project.json (xproj系)
• xprojはほぼ空
• プロジェクト設定はproject.jsonに書く
• これまでnuspecに書いてたようなパッケージ情報
• 依存するライブラリの情報
• これを使えるプロジェクトのタイプ
• ASP.NET 5
• Modern PCL
beta
beta
beta
project.json (NuGet v3)
• csproj/vbprojでもproject.jsonを使うように
• xprojでのproject.jsonのサブセット
• 依存ライブラリに関する情報だけ
• package.config (NuGet v2まで) の置き換え
• これを使えるプロジェクトのタイプ
• UWP
• (未保証でよければ)その他なんでも
• プロジェクト テンプレートにはなってなくて
手動でpackage.configをproject.jsonに差し替えたら動く
(要プロジェクト再読み込み)
RTM
RTM
既存
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 PCL
beta
新旧世代
• 同世代技術・新技術の方がサポート早いのは当然
• 世代的には .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した雰囲気
RTM
RTM
RTM状況、実はよくわからず
ここからおまけ
ASP.NET系
• xproj系プロジェクト = ASP.NET 5系チームによる開発
「Web」カテゴリー内に
「コンソール アプリ」って何なんだよ
xproj
xproj
xproj
beta
beta
beta
「プレビュー」の文字
• ASP.NET 5は、プレビューのところにプレビューの文字あり
「プレビュー」とは
書かれてないけども
さっきの
やっぱり「beta」って入ってる
• DNX SDKバージョン
作成
プロパティ
「プレビュー」とは
書かれてないけども やっぱベータなの?
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用?
csproj+project.jsonはUWP系(1)
• 任意のプロジェクト タイプに対するproject.json
手作業で
• packages.config削除
• project.json追加
• プロジェクトをリロード
csproj
packages.config
既存
csproj
project.json
RTM ?
UWP以外であっても、VS Tools for
Windowsのインストールが必須
手作業必須なのは、
• 単に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 Core
CoreCLR .NET Native
ASP.NET 5 UWP
beta
beta
わかる
CoreFX
beta
.NET Framework 4.6
選べる
RTM
RTM
Debug Release
RTM
依存先がベータ?!

More Related Content

What's hot

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

What's hot (20)

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

Viewers also liked

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

Viewers also liked (20)

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

Similar to Modern .NET

Dotnetcore30forwindesktop
Dotnetcore30forwindesktopDotnetcore30forwindesktop
Dotnetcore30forwindesktop
ru pic
 
20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux
Takayoshi Tanaka
 
Dot netcore multiplatform 2
Dot netcore multiplatform 2Dot netcore multiplatform 2
Dot netcore multiplatform 2
shozon
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
Kazunori Hamamoto
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
Kazunori Hamamoto
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
Toru Tamaki
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
 
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
日本マイクロソフト株式会社
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
Tsuyoshi Maeda
 
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
Jun Omae
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
Yuki Igarashi
 
170622 02
170622 02170622 02
170622 02
openrtm
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Akira Inoue
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
Yuta Matsumura
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
Tadahiro Ishisaka
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
 

Similar to Modern .NET (20)

Dotnetcore30forwindesktop
Dotnetcore30forwindesktopDotnetcore30forwindesktop
Dotnetcore30forwindesktop
 
20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux
 
Dot netcore multiplatform 2
Dot netcore multiplatform 2Dot netcore multiplatform 2
Dot netcore multiplatform 2
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
 
About .Net vNext
About .Net vNextAbout .Net vNext
About .Net vNext
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート【BS2】.NET 6 最新アップデート
【BS2】.NET 6 最新アップデート
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
 
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
170622 02
170622 02170622 02
170622 02
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 

More from 信之 岩永

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

More from 信之 岩永 (13)

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

Recently uploaded

「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
Hironori Washizaki
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
TsuyoshiSaito7
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo Lab
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
shogotaguchi
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
Takuya Minagawa
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
TsuyoshiSaito7
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 

Recently uploaded (10)

「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 

Modern .NET

  • 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. 今日話すこと 既存技術系 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. リリース状況 • .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. .NET Core • .NET Frameworkを再実装 • オープンソース • クロスプラットフォーム • 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/corefx GitHubリポジトリ的に も別れてたり • 規約的にはWindowsストア アプリ向け.NETと同系統 • 実装は新規(mscorlibを分解 + クロスプラットフォーム化) 同世代の別技術に .NET Nativeあり RTM
  • 7. Modularアーキテクチャ Collections Threading Reflection Linq Net IO … Modern (.NET Core) Legacy (.NET Framework) mscorlib※ ※正確にはいくつかのクラスはSystem.dllとかに分かれてるけど、それでもかなりでかい単位 • 機能単位でアセンブリを分割 • 必要な時に必要な分だけ参照 して使う • 標準ライブラリも個別・ NuGet配布 beta 既存 • インストーラーで一括インス トール
  • 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. 互換性 • ランタイムに関して • 仕様は一緒で別実装 • 標準ライブラリの規約に関して • 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. .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. xproj • xproj: プロジェクトの新しいファイル形式 • XMLでソースコード管理するのやめました • 基本、フォルダー以下にある全ソースコードがビルド対象 • 除外したいものは、project.jsonの中に除外設定を書く • ASP.NET 5とModern PCLはこれ • csproj/vbproj • ビルド対象にしたい.cs/.vbソースコードや、アセンブリ参照設定を 1つ1つXMLで記述 beta beta beta 既存
  • 12. project.json (xproj系) • xprojはほぼ空 • プロジェクト設定はproject.jsonに書く • これまでnuspecに書いてたようなパッケージ情報 • 依存するライブラリの情報 • これを使えるプロジェクトのタイプ • ASP.NET 5 • Modern PCL beta beta beta
  • 13. project.json (NuGet v3) • csproj/vbprojでもproject.jsonを使うように • xprojでのproject.jsonのサブセット • 依存ライブラリに関する情報だけ • package.config (NuGet v2まで) の置き換え • これを使えるプロジェクトのタイプ • UWP • (未保証でよければ)その他なんでも • プロジェクト テンプレートにはなってなくて 手動でpackage.configをproject.jsonに差し替えたら動く (要プロジェクト再読み込み) RTM RTM 既存
  • 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 PCL beta
  • 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. まとめ • 新旧はっきりわかれてるけど、いくらか混在利用可能 • .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
  • 22. ASP.NET系 • xproj系プロジェクト = ASP.NET 5系チームによる開発 「Web」カテゴリー内に 「コンソール アプリ」って何なんだよ xproj xproj xproj beta beta beta
  • 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. 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. csproj+project.jsonはUWP系(2) • project.jsonからのパッケージの復元 • csproj+project.jsonなプロジェクトのビルド NuGetパッケージ マネージャーを3.1以上にすればできる VS Tools for Windowsが必要 (UWP以外のプロジェクト タイプであっても) (同時にNuGetの方も更新されてた) (7/31にリリースしてた) (7/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 依存先がベータ?!

Editor's Notes

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