lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

.NET CoreプロジェクトのC#言語バージョンを変更する

概要

Mac環境の.NET CoreプロジェクトでMainメソッドにasync Taskを使おうとしたらC#の言語バージョンをC# 7.2に上げなさいよって怒られたのでバージョン変更方法のメモです。

VisualStudio for MacからC#の言語バージョンを変更します。

目次

参考サイト様

環境

VS for MacからC#の言語バージョンを変更

該当プロジェクトを選択し下記画像(左)の様にプロパティを選択。
ビルドグループの全般を選択し、下記画像(右)の様に言語バージョンを指定します。
デフォルトであれば既定となっています。

f:id:HM_Atlas:20190409143024p:plainf:id:HM_Atlas:20190409143039p:plain

OKを押下し設定が反映されると.csprojファイルにバージョン情報が追記されます。
今回はlatestを指定しました。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <LangVersion>latest</LangVersion>
</PropertyGroup>

番外:Console(Terminal)からC#の言語バージョンを変更(失敗)

下記の公式ドキュメントを参考に設定しようとしたんですが私の環境ではエラーが発生して実行できませんでした。

公式ドキュメントにはcsc(C Sharp Compiler)を使ってコマンドからバージョンを変更できると記載があったので試してみました。
しかし、結果としてエラーが発生して言語バージョンを変更できていません。
VS for Mac側で変更できているので深追いしてないです。

変更可能な言語バージョンの確認

ターミナルからcscコマンドを使用してlangversion?オプションを指定することで変更可能な言語バージョンが確認できます。

$ csc -langversion:?
Supported language versions:
default
1
2
3
4
5
6
7.0 (default)
7.1
7.2
7.3 (latest)
latest

言語バージョンの変更(失敗)

公式ドキュメントによればlangversion:を挟む形で変更したい任意のバージョンを指定します。 今回はlatestを指定しましたがエラーが発生して言語バージョンを変更できませんでした。

$ csc -langversion:"latest"
Microsoft (R) Visual C# Compiler version 2.8.2.62916 (2ad4aabc)
Copyright (C) Microsoft Corporation. All rights reserved.

warning CS2008: No source files specified.
error CS1562: Outputs without source must have the /out option specified

雑感

なぜかVS for Macのプロパティで変更する項目を見逃して5分ぐらい迷子になったのでメモに残しておきます。