新しいdotnet-core(RC2)を味見したい人に!

おひさしぶりです。気付けば、1か月更新してませんでした。

今日は、de:codeに向けて「.NET Core」を「予習」「味見」したい人に向けて、私なりにVisualStudioで、利用可能になる方法を紹介します。

大まかにこんな感じ

0.事前準備.VisualStudio 2015 Pro程度ものが入った環境を用意する(たぶんcommunityでもいけるとは思う)

1.NuGetのリポジトリを追加します。

2.プロジェクトを用意します。

3.project.jsonを書き換えます

4.随時動かす!

 

NuGetのリポジトリを追加

  1. 開発のビルドリソース – dotnet-core .NET Core “dev” builds
  2. リリース向けのリソース – dotnet-core-rel Feed for the dotnet-core packages that we plan to release and publish to nuget.org

 

名前は適当に、ソースのURLは、上記リンク先から下記の部分を利用します

※VS2015は上。

プロジェクトを用意します

新しいプロジェクトの作成ですね。

何かかきます。とりあえずコンソールなので、、、

グレイトなメッセージを出力!テンションあがるねっ

 

project.jsonを書き換え

dnxのみにして、しまいます。こうすると.NETFrameworkでは動作しなくなる。

Devはちょっと修羅なので、リリース候補のrc2にしてみました。

保存で、パッケージが復元されます。あとは、実行!

れこそグレートなメッセージ!!!・・・化けたよ。

こんなときは、慌てずに中身を覗いてみましょう。

            Console.WriteLine(Console.Out.Encoding.WebName);

というわけで、エンコードがutf-8となっているために、コンソールはShiftjis。

なので化けたのだということですね。

そこでproject.jsonに以下を追加

        "System.Text.Encoding.CodePages": "4.0.1-beta-23516"

さらに、メインも以下のように

        public static void Main(string[] args)
        {
            Console.WriteLine(Console.Out.Encoding.WebName);

            // 標準出力の取得
            var s = Console.OpenStandardOutput();

            // コードページの取得
            var e = System.Text.CodePagesEncodingProvider.Instance.GetEncoding(932);

            // エンコード付きのストリーム
            var w = new System.IO.StreamWriter(s, e);

            // これを忘れると・・・すぐに出力されなくなる
            w.AutoFlush = true;

            // 設定
            Console.SetOut(w);

            Console.WriteLine(Console.Out.Encoding.WebName);
            Console.WriteLine("てすとめっせーじ");
            Console.Read();
        }

実行!

となりました!

とはいえ、この問題は公式なNuGetから落とせるものでも発生しますので、特別RC2がというわけではありません。

試行錯誤しながら、メンバーを眺めてみたりとすることもできるということで

興味のあるかたはぜひぜひ

それでは!