つばろぐ

主に C#, .NET, Azure の備忘録です。たまに日記。

.NET Coreのプロジェクトをproject.jsonから.csprojに変換してみた

.NET Coreのバージョンについては難しくて有名です。いまだに私もよく分かっていません。

blog.shibayan.jp

yfakariya.blogspot.jp

そんな.NET Coreですが、1.0がリリースされて以降、プロジェクトを構成するファイルが project.json から .csproj に変更されました。
.NET Frameworkなプロジェクトでは .csproj ですので、もとに戻ったという感じですね。

project.jsonから.csprojに移行するのはさほど難しくないという記事をちらっと見た気がしたので実際に移行してみました。
各作業はGitHubにコミットとして残してありますので、併せて見て頂けるとイメージしやすくなるかもしれません。

project.json形式でプロジェクトを作成する

Visual Studio 2015にて project.json形式のプロジェクトを作成します。
今回はASP.NET Core 1.0 MVCのWebアプリケーションで試しました。

github.com

この段階ではプロジェクトの構成情報は.xprojファイル、NuGetパッケージに関する情報等はproject.jsonにて管理されています。

project.jsonから.csprojへの移行方法を確認する

公式ドキュメントを読みましょう。

docs.microsoft.com

ドキュメントによればVisual Studio 2017か、dotnet migrateコマンドを使いましょうとあります。
ということで手っ取り早くVisual Studio 2017を使って移行をやってみます。

Visual Studio 2017でプロジェクトを開く

Visual Studio 2015で作成したプロジェクトをVisual Studio 2017で開くと、下のような「プロジェクトをアップグレードするよ」という旨のダイアログが最初に表示されます。

f:id:tech-tsubaki:20170506205604j:plain

ちなみにこちらが全文となります。

一方向のアップグレード
Visual Studio は、次のプロジェクトを開くために機能的な変更を自動的に行います。プロジェクトの作成に使用したバージョンの Visual Studio では、プロジェクトを開くことができなくなります。
     - Project2Csproj, "D:\src\yuta\project2csproj\src\Project2Csproj\Project2Csproj.xproj"


非機能的な変更が必要です
Visual Studio は、次のプロジェクトに Visual Studio 2015、Visual Studio 2013、Visual Studio 2012、および Visual Studio 2010 SP1 で開くための非機能的な変更を自動的に加えます。プロジェクトの動作への影響はありません。
     - Project2Csproj, "D:\src\yuta\project2csproj\Project2Csproj.sln"


変更は必要ありません
これらのプロジェクトは、変更せずに Visual Studio 2015、Visual Studio 2013、Visual Studio 2012、および Visual Studio 2010 SP1 で開くことができます。
     - src, "src"
     - Solution Items, "Solution Items"

このダイアログで「OK」を押せば、プロジェクトの変換が行われ、project.jsonから.csprojに変わります。
移行が終わった時点のコミットはこちらです。

github.com

.xproj, global.json, project.jsonがなくなり、.csprojに集約された感じですね。
あとVisual Studioのバージョンがあがったことで .NET Coreのランタイムも1.0.1から1.0.4にアップグレードされてますね。

疑問

ところでcsprojに移行したことで、global.jsonで指定されていた .NET Core SDKのバージョンの記載がどこにも見当たりません。
csprojに<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>という指定があるため、このランタイムバージョンが利用できるSDKが勝手に指定されるイメージなのでしょうか?
ファイルを読み取る以上、このあたりがどう指定されていくのかがよく分からずじまい・・・。

f:id:tech-tsubaki:20170506211339j:plain

ちなみにランタイム1.0.4で利用できるSDKのバージョンは1.0.11.0.3となります。

github.com

Firefoxでdocs.microsoft.comが読みやすくなるアドオン「Redirector」が便利だった

昔、Google ChromeMSDNのドキュメントが読みやすくなる拡張機能を紹介しました。

tsubalog.hatenablog.com

Microsoftの技術ドキュメントは多言語対応されており、日本語で読むことができます。
たとえばdotnetのドキュメントは英語と日本語で読むことができます。

英語
.NET Documentation | Microsoft Docs

日本語
.NET ドキュメント | Microsoft Docs

ググったときに英語のほうのドキュメントが結果に載ることもよくありますが、すんなり読めるのは日本語のほうなので、URLを書換えて日本語ページに切り替えていました。

Chromeをメインで使ってた時期は前述の拡張機能でURLの書換え(=言語切替)ができていましたが、Firefoxでは相当するアドオンが見つからず手動での切り替えでドキュメントを読んでいました。

ところが先日「Redirector」というアドオンを見つけ、Firefoxでも自動での言語切替ができるようになりました。

addons.mozilla.org

要するにURLを書換えてリダイレクトしてくれるアドオンになります。 docs.microsoft.comの言語設定はURLで規則的に設定できるので、その部分を書き換えれば別の言語のドキュメントを表示することができます。

f:id:tech-tsubaki:20170503004518j:plain

上の画像では https://docs.microsoft.com/en-us/ へのアクセスに対して https://docs.microsoft.com/ja-jp/ にリダイレクトするような設定になっています。
これで英語版のドキュメントを開いても自動で日本語に訳されたページを表示することができます。

英語版を読みたい時にアイコンから設定を無効にしてあげればよいです。

Fukuoka.NET 第5回を開催&登壇しました

f:id:tech-tsubaki:20170129193224j:plain

1月27日の夜、Fukuoka.NETの第5回を開催しました。
※上の写真は弊社同僚Facebookポストから拝借。

fukuten.connpass.com

2017年最初のふくてんということもあり、平日夜ながらセッション3名、LT5名という気合を入れた構成にしてみました。
参加者も一時キャンセル待ちが出るなど盛況となりました。ありがたいことですね。

いまさら学ぶMVVMパターン

トップバッターを努めた私は「いまさら学ぶMVVMパターン」というタイトルで登壇しました。
昨年は .NET Coreを中心に、Webアプリケーションの話を多くしましたが、今年はWeb以外の話もしたいなぁと思い、このネタを取り上げました。

docs.com

福岡は地方ということもあるかもしれませんが、デスクトップアプリケーションの開発はいまだによく行われます。
そんなデスクトップアプリケーション開発の際に、知っておくと便利なMVVM(Model-View-ViewModel)という考え方や、.NETでの実現方法の導入について取り上げました。

なお元ネタはこちらですね。
Model-View-View Model を利用した汎用性のあるクラス ライブラリの使用

実は自分の得意領域ってこのあたりだったりします。(常駐が長かったので・・・)

WPFSilverlightで一旦落ち着いたと思ってたMVVMですが、Xamarinでも使う機会が増えてくると思い、個人的な復習も兼ねた内容にしました。

他のセッション

ASP.NET Core×Ansibleや、Xamarin×MobileAppsといったセッションがあり、非常に楽しめました。

speakerdeck.com

docs.com

謝辞

Fukuoka.NET 第5回に参加および登壇頂いた皆様、ありがとうございました!
次回は3月に開催したいと思ってますので、宜しくお願い致します。


C#実践開発手法 (マイクロソフト公式解説書)

C#実践開発手法 (マイクロソフト公式解説書)