Visual Studio 2015でC#6サポートを無効にするにはどうすればよいですか?


136

バックグラウンド

C#6を有効にしてVS 2015で開発しているプロジェクトがあり、C#6を使用せずにVS 2013を使用する開発者がプロ​​ジェクトを開く必要がある場合があります。

この特定のソリューション内でC#6を使用するつもりはありません(私が望むだけ)。

問題

Visual StudioとReSharperは、C#6がサポートされていない以前のバージョンのVisual Studioでソリューションを動作不能にする有用なC#6言語構成を提案しています。

私がしましたReSharperのC#6のサポートを無効にしますが、私はC#は、ソリューション全体を越えています/無効の上限に見えることはできません。

質問

ソリューション内またはVisual Studio 2015内でC#をC#5機能に制限するにはどうすればよいですか?


17
[ビルド]タブ、[詳細]ボタン、言語バージョンの設定。
ハンスパッサント

@HansPassantありがとう!これはまさにそれです。回答フォームに記入しますが、ここに回答を投稿していただければ、必ず正しいものとしてマークします。
SeanKilleen

まさに私の問題!私たちのソリューションは2013年のものですが、代わりにVS2015を使い続けたいです。
2015年

@entreは必ずしも必要ではありません。C#6の機能はいつでも使用できません。ただし、Visual StudioとResharperは、これらの機能を利用するリファクタリングを提案しています。ビルドマシンがC#6をサポートしている限り、問題にはなりません。
SeanKilleen 2015

私はc#6を使いたくありません...しかし、それらの提案はまだ得ています..私は再シャープ化のためにそれらを削除しました..しかし、ビジュアルスタジオを求めています...私の.netフレームワークは4.5
2015

回答:


136

Properties => Build tab => Advanced button => Language Version優先バージョンに移動して設定することで、各プロジェクトの言語機能を個別に設定できます。

新しい "C#6.0" .Net Compiler Platform(コードネームはRoslyn)が引き続き使用されることを理解する必要があります。ただし、そのコンパイラーは古いコンパイラーの動作を模倣し、その特定の言語バージョンでのみ使用可能な機能に制限されます。


ソリューション全体の設定が利用できるとは思いません。


1
VB.NETに同等の設定があるかどうかを知っていますか?
Bradley Uffner、2015

2
今日は早いうちに答えを得た。stackoverflow.com/questions/31454902/...
ブラッドリーUffner

1
プロジェクトのプロパティを変更した後、スタジオでC#6.0コードをエディターでマークするだけです。ただし、エラーとしては処理されません(正常にビルドされます)。
Eugene Griaznov

2
多くのプロジェクトがある場合は、csprojを直接編集することをお勧めします。最初の内側に以下を追加しますPropertyGroup:要素<LangVersion>5</LangVersion>
mhand

VS2017でC#7サポートを無効にする方法とまったく同じように機能します- <LangVersion>6</LangVersion>代わりに使用してください。
Paul Suart

49

以下を追加.sln.DotSettingsすると、ソリューションレベルで無効になります

<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>

または、.sln.DotSettingsファイルがない場合:

  1. ソリューションファイルの名前がApple.slnの場合は、その横にApple.sln.DotSettingsというファイルを作成します。

  2. 次の内容を伝えます。

    <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
    </wpf:ResourceDictionary>
  3. ソリューションを閉じて再度開くと、ResharperはC#5についてのみ警告するはずです。

  4. 最終的にC#6の機能を使い始めるときに、これを削除することを忘れないでください!:)


1
それはソリューション内のすべてのプロジェクトに適用され、ファイルがチェックインすることができているので、これは答えとしてマークされなければならない。
twoleggedhorse

8
@twoleggedhorse実際には、この回答は、OPがすでに無効になっているResharperにのみ関連しているため、質問にも回答しません。
i3arnon 2016

1
これも回答としてマークする必要があることにも同意します。OPはソリューション全体の設定について質問しましたが、これはこの回答でのみ提供されます。
sam-xor

1
とにかく、これによってVisual Studioがコードの改善に関するMicrosoft独自の推奨事項を表示するのを防ぐことはできません(それらを防ぐための実際の問題でした)。この回答は、ReSharperでは機能しますが、Visual Studioでは機能しません(私たち全員がReSharperを使用しているわけではありません)。
Stephen Reindl

11

私が書いたこのツールは、設定が必要なプロジェクトがたくさんある場合に役立ちますLangVersion


10

あなたは、すべての言語の機能を設定することができますsolutions/csprojMSBuildUserExtensionsPath

の値を検索します。$(MSBuildUserExtensionsPath)次のようになりますC:\Users\$(User)\AppData\Local\Microsoft\MSBuild

次にForce.LangVersion.ImportBefore.props、フォルダ内のファイルを次のように編集します$(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LangVersion>5</LangVersion>
  </PropertyGroup>
</Project>

9

手順は既に上記で説明されており、VS2015のスクリーンショットを追加するだけです。

プロジェクトのプロパティ>>ビルド>>詳細>>言語バージョン

ここに画像の説明を入力してください

これをC#5.0に設定しました。


8

プロジェクトエクスプローラーで[プロジェクト]を右クリックし、[プロパティ]を選択します。

[プロパティ]タブが開いたら、[ビルド]を選択し、右下の[アドバンス]ボタンをクリックします。

言語バージョンと呼ばれるドロップダウンボックスがあります。選択を「C#5.0」に変更します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.