私はC#6.0で導入された最新の機能を試していて、自動プロパティ初期化子の例に従いました。
class NewSample
{
public Guid Id { get; } = Guid.NewGuid();
}
しかし、私のIDEは構文を認識しませんでした。
Visual Studio 2013でC#6.0を有効にするにはどうすればよいかと思います。使用しているターゲットフレームワークは4.5.1です。
私はC#6.0で導入された最新の機能を試していて、自動プロパティ初期化子の例に従いました。
class NewSample
{
public Guid Id { get; } = Guid.NewGuid();
}
しかし、私のIDEは構文を認識しませんでした。
Visual Studio 2013でC#6.0を有効にするにはどうすればよいかと思います。使用しているターゲットフレームワークは4.5.1です。
回答:
これによると、それは単なるインストールであり、Visual Studio 2013に移動します。
実際、このリリースからC#6.0コンパイラをインストールするには、Visual Studio 2013拡張機能をインストールするだけで済みます。これにより、MSBuildターゲットファイルが更新されます。
したがって、https://github.com/dotnet/roslynからファイルを取得するだけで準備完了です。
Visual Studio 2013のパッケージを更新しないため、そこで実装されている仕様の古いバージョンであることを知っておく必要があります。
Visual Studio 2013の上にインストールされる4月のエンドユーザープレビューを試すこともできます(注:このVS 2013プレビューは非常に古く、更新されていません)。
したがって、最新バージョンを使用したい場合は、Visual Studio 2015をダウンロードする必要があります。
VS2013では、新しいコンパイラをnugetパッケージとしてプロジェクトにインストールできます。そうすれば、VS2015や更新されたビルドサーバーは必要ありません。
https://www.nuget.org/packages/Microsoft.Net.Compilers/
Install-Package Microsoft.Net.Compilers
このパッケージを使用すると、C#6.0コード/構文を使用/ビルドできます。VS2013は新しいC#6.0構文をネイティブに認識しないため、正常にビルドされますが、コードエディターウィンドウにエラーが表示されます。
Resharperを使用すると、C#6機能に波線が表示されますが、電球には「このプロジェクトのC#6.0サポートを有効にする」オプションがあります(設定は.DotSettingsに保存されます)。
@ stimpy77で述べたように:MVC Razorビューでのサポートには、追加のパッケージが必要です(コメントを読み取らない場合)。
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
C#6.0を完全にサポートしたい場合は、VS2015をインストールする必要があります。
ここでの回答の多くは、Roslyn(オープンソースの.NET C#およびVBコンパイラ)が.NET 4.6に移行する前に書かれました。ですから、私のプロジェクトのように、プロジェクトが4.5.2をターゲットにしている場合、それらは役に立ちません(継承され、変更できません)。
ただし、https://www.nuget.org/packages/Microsoft.Net.CompilersからRoslynの以前のバージョンを入手して、最新バージョンの代わりにインストールすることができます。1.3.2を使用しました。(私は2.0.1を試しました-これは.NET 4.5で実行される最後のバージョンのようです-コンパイルすることができませんでした*)VS 2013のパッケージマネージャーコンソールからこれを実行します。
PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2
次にVisual Studioを再起動します。最初はいくつかの問題がありました。C#のバージョンをデフォルトに戻し(C#6.0はバージョンリストには表示されませんが、デフォルトになっているようです)、VSをクリーンアップ、保存、再起動して再コンパイルする必要があります。
興味深いことに、コードでC#6.0機能が使用されていたため、IntelliSenseエラーはありませんでした(そもそもC#6.0が必要だった理由です)。
*バージョン2.0.1がエラーをスローしました "Microsoft.CodeAnalysis.BuildTasks.CscタスクをアセンブリMicrosoft.Build.Tasks.CodeAnalysis.dllからロードできませんでした。ファイルまたはアセンブリをロードできませんでした 'Microsoft.Build.Utilities.Core、Version = 14.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a 'またはその依存関係の1つ。指定されたファイルが見つかりません。宣言が正しいこと、アセンブリとそのすべての依存関係が利用可能であること、およびタスクにMicrosoft.Build.Framework.ITaskを実装するパブリッククラス。
更新この回答を投稿してから気づいたことの1つは、デバッグ中にコードを変更すると(「編集して続行」)、C#6.0コードが、元に戻ったように見えるエラーに突然表示されることです。 C#6.0より前の環境。これには、デバッグセッションの再起動が必要です。特にWebアプリケーションでは非常に迷惑です。
ビルド時間はVS 2015ユーザー向けに増加することを言及する価値があります。
Install-Package Microsoft.Net.Compilers
VS 2015を使用していて、プロジェクトでこのパッケージを保持する必要がある場合は、ビルド時間の増加を修正できます。
ファイルpackages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.props
を編集してクリーンアップします。ファイルは次のようになります。
<Project DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
これにより、Microsoft.Net.Compilers
パッケージを追加する前と同じようにプロジェクトがビルドされます。
Resharperがあれば、Visual Studio 2013でC#6.0のすべての機能を使用できます。
Resharper Buildとvoiláを有効にする必要があります!Resharperオプション->ビルド-Resharperビルドを有効にし、[MSBuild.exeバージョンを使用]で[最新インストール]を選択します
このようにして、ResharperはC#6.0プロジェクトをビルドし、C#6.0コードに無効として下線を引きません。
Visual Studio 2015を持っていますが、これも使用しています。理由は次のとおりです。
この問題の解決策を今しばらく探していたので、これをここに配置します。おそらく他の人を助けるでしょう。
誤解があるようです。そのため、VS2013にパッチを適用しようとする代わりに、ここにあり、Microsoftの人からの回答です。 60-ever-be-supported-by-vs-2013?forum = roslyn
それでは、読んでVS2015をインストールしてください。