LoginSignup
21
16

More than 5 years have passed since last update.

C#のコードがvisual studio 2015だとコンパイルエラーになる

Last updated at Posted at 2015-07-21

同じプロジェクト、ソリューションをVisualStudio2013で開くとコンパイルは成功する。

shift-jisの.csファイルに"文字列"、識別子に日本語があるとコンパイルエラーになる。

CS1056 予期しない文字 '文字' です。
CS1009 認識できないエスケープ シーケンスです。
ほか

ファイルエンコーディングをutf-8にすれば解決する。


ファイルエンコーディングの変更方法の一例
Visual Studioのエディタで対象のファイルを開く
メニュー「ファイル」ー「保存オプションの詳細設定」でutf-8を選択して保存すれば変換される。


.NET2のときに作られたC#のライブラリプロジェクトを現在はVisualStudio2013を使って.NET3.5のプロジェクトとしてビルドしていた。
そのプロジェクトをVisualStudio2015で開いてビルドしたらCS1009などのコンパイルエラーが発生した。エラー箇所はどこも日本語が書かれていたが、日本語が書かれていてもエラーになっていないファイルもあった。このライブラリプロジェクトの.csファイルはshift-jisのものとutf-8のものが混在しているのは知っていた。エラーがあるファイルのエンコーディングを確認したらshift-jisだった。utf-8に変換したらコンパイルエラーが発生しなくなった。


それと、識別子に"・"、"・"を使っている場合はファイルがutf-8であってもVisualStudio2015が使用するcscではコンパイルエラーになる。
参考 [雑記] C# ソースコードと Unicode - C# によるプログラミング入門 | ++C++; // 未確認飛行 C


メニュー「オプション」
プロジェクトおよびソリューション - ビルド/実行
"MSBuildプロジェクトビルドの出力の詳細"を"診断"にして確認した。

VisualStudio2015
C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe
Microsoft (R) Visual C# Compiler バージョン 1.0.0.50618

VisualStudio2013
C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe
Microsoft (R) Visual C# Compiler version 12.0.40629.0
for C# 5

パラメーターは2015に”ruleset”が追加されている以外は同じ。

21
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
16