web-dev-qa-db-ja.com

名前 'nameof'は現在のコンテキストに存在しません

.Net Framework 4.6でVS 2013を使用しています。新しいC#6機能(たとえばnameof)を使用したいのですが、見つかりませんでした。

enter image description here

VS 2015を使用する必要がありますか?またはそれ以上の.Net Framework?

31
Arian

はい、C#6機能を使用するには、C#6コンパイラが必要です。 Visual Studio 2013にはC#6コンパイラがありません。 Visual Studio 2015はサポートします。

Visual Studio 2013のRoslynプレリリースはありましたが、最終的なC#6を実装していません。実際にはすべての機能を実装しているわけではなく、実装することは最終的なC#6の動作とは異なります。

37
user743382

はい。VisualStudio 2015を使用する必要があります。VS2013ではサポートされていません。関連リンク: https://msdn.Microsoft.com/en-us/library/dn986596.aspx

6
amit dayama

VS2015より前では、次のクラスをソリューションに追加し、_ 変数またはパラメーターの名前を取得 で提案されているように、nameof(のすべてのインスタンスをNameOf.nameof(() =>に置き換えることができます

using System;
using System.Linq.Expressions;

namespace ICSharpCode.SharpZipLib
{
    public class NameOf
    {
        public static String nameof<T>(Expression<Func<T>> name)
        {
            MemberExpression expressionBody = (MemberExpression)name.Body;
            return expressionBody.Member.Name;
        }
    }
}
4
ajeh

VS2013ではC#6を使用できません。コンパイラは、使用しようとしている新しいC#6構文を理解しません。 C#6.0をVisual Studio 2013に追加するにはどうすればよいですか?

4
user1269016

このnugetパッケージをインストールすると、プロジェクトで修正されました。

インストールパッケージMicrosoft.CodeDom.Providers.DotNetCompilerPlatform

4
Paulj

Teamcityでこのエラーが発生する場合は、次の変更を行ってビルドステップを修正します。

  1. TeamcityでMSBuildステップを開きます
  2. MSBuildバージョンをMicrosoft Build Tools 2015に変更します
  3. MSBuild ToolVersionを14.0に変更します
2
sree
  1. 「パッケージマネージャーコンソール」で、それぞれのプロジェクトを選択して「install-package Microsoft.Net.Compilers」を実行します。
  2. プロジェクト設定で「C#言語レベル」が「C#6.0」であることを確認します。
0