.Net Framework 4.6でVS 2013を使用しています。新しいC#6機能(たとえばnameof
)を使用したいのですが、見つかりませんでした。
VS 2015を使用する必要がありますか?またはそれ以上の.Net Framework?
はい、C#6機能を使用するには、C#6コンパイラが必要です。 Visual Studio 2013にはC#6コンパイラがありません。 Visual Studio 2015はサポートします。
Visual Studio 2013のRoslynプレリリースはありましたが、最終的なC#6を実装していません。実際にはすべての機能を実装しているわけではなく、実装することは最終的なC#6の動作とは異なります。
はい。VisualStudio 2015を使用する必要があります。VS2013ではサポートされていません。関連リンク: https://msdn.Microsoft.com/en-us/library/dn986596.aspx
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;
}
}
}
VS2013ではC#6を使用できません。コンパイラは、使用しようとしている新しいC#6構文を理解しません。 C#6.0をVisual Studio 2013に追加するにはどうすればよいですか?
このnugetパッケージをインストールすると、プロジェクトで修正されました。
インストールパッケージMicrosoft.CodeDom.Providers.DotNetCompilerPlatform
Teamcityでこのエラーが発生する場合は、次の変更を行ってビルドステップを修正します。