Skip to content
.NET Coreの開発環境作成してみるテスト
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
ConsoleApp.Test
ConsoleApp
WebApp
WebApp21
発行SQL/Postgresql
.gitignore
LICENSE
README.md
installcsharp.png
publishWindowsTips.md
useDinkToPdf.md

README.md

dotNETCoreTest

.NET Coreの開発環境作成してみるテスト

検証環境

Windows10 Home

やったこと

ツール類のインストール

  1. .NET Core SDKのインストール
    今回は「.NET Core SDK 2.0.2 with .NET Core 2.0.0」をインストール
  2. Visual Studio Codeのインストール
    microsoftからダウンロード
  3. Visual Studio Codeを起動し、Visual Studio Codeの拡張機能(C#)をインストール
    installcsharp.png
  4. 拡張機能「XMLドキュメントコメント」をインストール
    C# XML Documentation Comments

Visual Studio Codeの設定

  1. Visual Studio Codeを起動する
  2. 左メニューからExplorerを選択しOpenFolderをクリック
  3. カレントフォルダを選択

コンソールアプリサンプルの作成

  1. ターミナル(コマンドプロンプト)を起動する
  2. 下記のコマンドを実行する
    ※カレントフォルダにConsoleAppフォルダが作成される
    dotnet new console -o ConsoleApp

コンソールアプリの実行ファイル作成

  1. プロジェクトファイル(*.csproj)に
    <RuntimeIdentifiers>win-x86</RuntimeIdentifiers>
    を追加する
  2. ターミナル(コマンドプロンプト)で
    dotnet restore
    を実行する
  3. ターミナル(コマンドプロンプト)で
    dotnet publish -c release -r win-x86
    を実行する

コンソールアプリのテスト作成

  1. ターミナル(コマンドプロンプト)で
    dotnet new xunit -o ConsoleApp.Test
    を実行し、テストプロジェクトを作成する
  2. ターミナル(コマンドプロンプト)で
    cd ConsoleApp.Test
    dotnet add reference ../ConsoleApp/ConsoleApp.csproj
    を実行し、テスト対象のプロジェクトを設定する
  3. .vscode/tasks.jsonにtestタスクを追加する
    参照:.vscode/tasks.jsonのtestタスク
  4. ConsoleApp.Testディレクトリ以下にテストを書く
    参照:HellowTest.cs
  5. testタスクを実行する
    1. メニューから「タスクの実行」をクリック
    2. 「test」をクリック

nugetの使い方

例)Microsoft.Data.SQLiteのインストール

  1. nuget.orgで「Microsoft.Data SQLite」を検索
    Microsoft.Data SQLiteを選択
  2. 「.NET CLI」のタブを表示し、「dotnet add package Microsoft.Data.SQLite --version 2.0.0」をコピー
  3. ターミナルで「dotnet add package Microsoft.Data.SQLite --version 2.0.0」を実行
  4. VisualStudioCodeでrestoreするか聞いてくるのでRestoreをクリック

ログ設定(コンソールアプリで実行する場合)

  1. ターミナルでdotnet add package Microsoft.Extensions.Logging --version 2.0.0を実行
    ※インストール対象Microsoft.Extensions.Logging
  2. ターミナルでdotnet add package Microsoft.Extensions.Logging.Console --version 2.0.0を実行
    ※インストール対象Microsoft.Extensions.Logging.Console
  3. コンソールアプリで利用する場合は下記のように実装する
using Microsoft.Extensions.Logging;

namespace ConsoleApp
{
  class Program
  {
    static void Main(string[] args)
    {
      using(var loggerFactory = new LoggerFactory().AddConsole()){
        var logger = loggerFactory.CreateLogger<Program>();
        logger.LogWarning(new EventId(999),"test!");
        logger.LogError(new EventId(999),"test! {0}",new Exception("例外エラーテスト"));
      }
    }
  }
}

// 出力結果
//warn: ConsoleApp.Program[999]
//      test!
//fail: ConsoleApp.Program[999]
//      test! System.Exception: 例外エラーテスト

セッションの設定

  1. ターミナルで`dotnet add package Microsoft.AspNetCore.Session --version 2.0.1`を実行

    または csprojファイルの「ItemGroup」に<PackageReference Include="Microsoft.AspNetCore.Session" Version="2.0.1" />を追加
    ※インストール対象Microsoft.AspNetCore.Session

  2. Startup.csにセッションの設定を追加する
    public class Startup
    {
      //-------- ~省略~ --------
    
      public void ConfigureServices(IServiceCollection services)
      {
        //-------- ~省略~ --------
    
        // Adds a default in-memory implementation of IDistributedCache.
        services.AddDistributedMemoryCache();
    
        // session
        services.AddSession();
      }
    
      public void Configure(IApplicationBuilder app, IHostingEnvironment env)
      {
        //-------- ~省略~ --------
    
        // session設定
        app.UseSession();
    
        //-------- ~省略~ --------
      }
    }
  3. セッションの値の取得と設定例は下記のようにする。
    [Route("api/[controller]")]
    public class UsersController : Controller
    {
      // セッションキー
      private const string SessionKeyName = "_Name";
      
      public IActionResult Post([FromBody]Dictionary<string, object> param)
      {
        //-------- ~省略~ --------
    
        // セッションの値チェックと取得
        if(HttpContext.Session.Keys.Contains(SessionKeyName)){
          data.Add("beforeValue", HttpContext.Session.GetString(SessionKeyName));
        }
        // セッションに値を設定
        HttpContext.Session.SetString(SessionKeyName, userName);
    
        //-------- ~省略~ --------
      }
    }

ソリューションとWebAPIプロジェクトを作成、設定する

  1. ソリューションフォルダを作成する
    ターミナル(コマンドプロンプト)で
    dotnet new sln -o WebApp を実行する
  2. ソリューションフォルダに移動する
    cd .\WebApp\
    を実行する
  3. WebAPIプロジェクトを作成する
    dotnet new webapi -o WebApiSample
    を実行する
  4. WebAPIプロジェクトをソリューションフォルダを追加する
    dotnet sln WebApp.sln add WebApiSample/WebApiSample.csproj を実行する

その他

とりえず使ってみた感想

  • 「定義に移動」はVisualStudioと同じようにF12。
    わかりやすい。
  • リネームがF2
    Ctrl+Rじゃないのか……
  • csファイル追加だけでちゃんとビルド対象になる
    すごい。
  • 「///」+改行でメソッドコメントが自動生成できない
    地味に困った。カスタマイズがあるのかな。
    [2017/10/31 追記]ちょうどいいプラグインがあった。
    C# XML Documentation Comments
  • DebugConsoleで日本語が文字化けする。
    (実行時にShiftJISで出力されてる?)
    プログラムにConsole.OutputEncoding =System.Text.Encoding.UTF8;を追加すると正しく表示される。
    これでよいのかな?
  • DB接続はEF経由じゃないとダメ?
    nuget.orgには.NetCore用のDBのServer providerが少ないのだけれど……
    Getting Started with EF Core on .NET Core Console App with a New database
    [2017/11/04 追記]ADO.NETで接続できるものがあった。
    Microsoft.Data SQLite
    Microsoft.Data SQLite APIリファレンス
  • デバッグコンソールからモジュールロードを非表示に設定するには
    launch.jsonのconfigurations以下のnameに下記を追加する
    "logging":{ "moduleLoad": false }
  • ソリューション作っておけばよかった……

TODO

参考サイト

You can’t perform that action at this time.