Visual Studio 2015 で Shift JIS エンコーディングされたソース ファイルをビルドするとコンパイラ エラーが発生する場合がある

[更新: 2016/04/14]
本記事でご案内しているコンパイラエラーは、Visual Studio 2015 RTM の不具合に起因した問題であり、Visual Studio 2015 Update 1で修正されています。
そのため、本記事に記載の方法のほかに、Update 1、または、それ以降の更新プログラムを適用することでもこのコンパイラ エラーを解決できます。

 

こんにちは、Visual Studio サポート チームです。

7 月 20 日に Visual Studio 2015 が正式にリリースされ、すでに多くのお客様にダウンロードしてご利用いただいています。Visual Studio 2015 の新機能については前回の記事等をご覧ください。
まだ入手されていない方は、是非、これらの新機能を含め、大きな進化を遂げた最新の Visual Studio 2015 をお試しください。

今回は、そのVisual Studio 2015 をご利用いただく際に、ご注意いただきたいソース ファイルのエンコーディングに関する問題をご案内いたします。

 

問題

Visual Studio 2015 を使用して Shift JIS エンコーディングされているソース ファイルをコンパイルすると、コンパイラ エラー (CS1009、BC30037 など) が発生する場合があります。

 

対処方法

本問題は、Visual Studio 2015 のコンパイラが、Shift JIS エンコーディングで記述されたソース ファイルの文字コードを適切に解釈できないために発生しています。
以下のいずれかの方法で、本問題に対処することが可能です。

(方法 1)  プロジェクト ファイルに <CodePage> 要素を追加し、Shift JIS (932) に対応させる方法

.csproj や .vbproj といったプロジェクト ファイルの <PropertyGroup> 要素に <CodePage> 要素を追加し、Shift JIS (932) への対応を指定する方法です。

- 手順
1. Visual Studio で対象のプロジェクトを開きます。

2. [ソリューション エクスプローラー] 上で対象のプロジェクトを右クリックし、[プロジェクトのアンロード] を選択します。

3. 再度、[ソリューションエクスプローラー] 上で対象のプロジェクトを右クリックし、[編集] を選択します。

4. プロジェクト ファイルの編集画面で、<PropertyGroup> 要素に、<CodePage> 要素を以下のように追加します。

          <PropertyGroup>                    <CodePage>932</CodePage>

 

5. 編集を保存し、再度、[ソリューション エクスプローラー] 上で対象のプロジェクトを右クリックし、[プロジェクトの再読み込み] を選択します。

6. プロジェクトをリビルドし、コンパイラ エラーが解消することを確認します。

 

(方法 2)  ソース ファイルを Shift JIS から UTF-8 に変換する方法

Shift JIS エンコーディングされたソースファイルを UTF-8 エンコーディングに変換して利用する方法です。ソース ファイルのエンコーディングの変換には、各種エディターやツールをご利用いただけますが、以下では、PowerShell コマンドで指定したフォルダー配下のファイルを一括変換する例をご案内します。

※ 以下は、指定したフォルダー配下に含まれる .vb ファイルを一括して UTF-8 エンコーディングに変更する例です。ソース ファイルが削除されないよう、必ずバックアップを取ってお試しください。本サンプルのご利用に際して生じたいかなる問題についても弊社では責任を負いかねます。

<コマンド例>
1. 初めに、以下のコマンドで元のファイルの拡張子を変更します。

Get-ChildItem <起点となるフォルダー> -Recurse -Include *.vb | Rename-Item -NewName {$_.FullName + ".bkup"}

2. 以下のコマンドで UTF-8 エンコーディングのファイルを作成します。

Get-ChildItem <起点となるフォルダー> -Recurse -Include *.vb.bkup | ForEach-Object {Get-Content $_.FullName | Out-File -Encoding UTF8 ($_.FullName -replace '.vb.bkup','.vb')}

***

以上となります。
製品の動作でご不便をおかけして申し訳ございませんが、上記対処方法がご参考になりましたら幸いです。