web-dev-qa-db-ja.com

Visual Studio 2013でC#6.0の機能を有効にする方法

私はC#6.0で導入された最新の機能を調べて、自動プロパティ初期化子の例をたどりました。

class NewSample
{
    public Guid Id { get; } = Guid.NewGuid();
}

しかし、私のIDEは構文を認識しませんでした。

Visual Studio 2013でC#6.0を有効にする方法を考えています。使用しているターゲットフレームワークは4.5.1です。

197
Hassaan

廃止されたプレリリースソフトウェアに関する情報:

this によると、これは単なるインストールです。VisualStudio 2013に移行します。

実際、このリリースからC#6.0コンパイラをインストールするには、Visual Studio 2013エクステンションをインストールするだけで、MSBuildターゲットファイルが更新されます。

https://github.com/dotnet/roslyn からファイルを入手するだけで準備完了です。

ここで実装されている仕様の古いバージョンであることを知っておく必要があります。これらはVisual Studio 2013用のパッケージを更新しないためです。

また、Visual Studio 2013の上にインストールされるApril's End User Previewを試すこともできます(注:このVS 2013プレビューはかなり古くなっており、更新されていません)。

ですから、最新版を使いたいのなら、 Visual Studio 2015 をダウンロードする必要があります。

63
Patrick Hofman

VS2013では、新しいコンパイラをnugetパッケージとしてプロジェクトにインストールできます。そうすれば、VS2015やアップデートされたビルドサーバーは必要ありません。

https://www.nuget.org/packages/Microsoft.Net.Compilers/

Install-Package Microsoft.Net.Compilers

このパッケージでは、C#6.0のコード/構文を/ buildすることができます。 VS2013は新しいC#6.0構文をネイティブに認識しないため、コードエディタウィンドウにエラーが表示されますが、正常にビルドされます

Resharperを使用すると、C#6の機能に曖昧な線が表示されますが、電球には「このプロジェクトに対するC#6.0サポートを有効にする」オプションがあります(.DotSettingsに保存されます)。

@ stimpy77で述べられているように、MVC Razorビューでのサポートのためには、追加の パッケージが必要です (コメントを読んでいない人のために)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

C#6.0を完全にサポートしたい場合は、VS2015をインストールする必要があります。

176

(2015年の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パッケージを追加する前と同じようにプロジェクトをビルドするように強制します。

4
Ashot Muradian

ここでの答えの多くは、Roslyn(オープンソースの.NET C#およびVBコンパイラ)が.NET 4.6に移行する前に書かれたものです。ですから、あなたのプロジェクトが目標としているなら、彼らはあなたを助けません、例えば私のように4.5.2(継承され変更できません)。

しかし、以前のバージョンのRoslynhttps://www.nuget.org/packages/Microsoft.Net.Compilers から入手できます。そして最新版の代わりにそれをインストールしてください。私は1.3.2を使いました。 (私は2.0.1を試しました - これは.NET 4.5で動く最後のバージョンであるようです - しかし私はそれをコンパイルすることができませんでした*)。VS2013のPackage Managerコンソールからこれを実行してください:

PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2

次にVisual Studioを再起動します。私は最初いくつかの問題を抱えていました。 C#のバージョンをdefaultに戻す必要があります(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、バージョン= 14.0.0.0、カルチャ=ニュートラル、PublicKeyToken = b03f5f7f11d50a3a 'またはその依存関係のいずれかです。指定されたファイルが見つかりません。宣言が正しいこと、アセンブリとそのすべての依存関係を確認してください。が利用可能であり、タスクにMicrosoft.Build.Framework.ITask.を実装するパブリッククラスが含まれていること

UPDATEこの回答を投稿してから気付いたことの1つは、デバッグ中にコードを変更した場合( "Edit and Continue")、C言語を使用しているC言語が#6.0のコードは突然C#6.0以前の環境に戻るように見えるもののエラーとして表示されます。これにはデバッグセッションの再起動が必要です。特にWebアプリケーションにとって非常に迷惑です。

4
SteveCinq

Resharperがあれば、Visual Studio 2013で完全なC#6.0機能を使用することが可能です。
Resharper Buildを有効にする必要があります。 Resharperのオプション - >ビルド - Resharperビルドを有効にし、 "Use MSBuild.exe version"で "Latest Installed"を選択します。

このようにして、ResharperはあなたのC#6.0プロジェクトを構築しようとしていて、C#6.0コードを無効であると強調することもしません。

私はVisual Studio 2015を持っていますが私もこれを使っています:

  1. 何らかの理由で、ResharperのユニットテストがVisual Studio 2015でうまく機能しない
  2. VS 2015はVS 2013よりもはるかに多くのメモリを使用します。

私はここしばらくの間この問題の解決策を探していたので、ここにこれを置いています、そして多分それは他の誰かを助けるでしょう。

2
devdimi