C#6.0でVisual Studio 2015をテストしていますが、言語機能が機能していません。 MVC Webアプリケーションでは、次のコードがコンパイルされます。
if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName))
{
// More logic here...
}
ただし、DebugおよびIIS Expressを介してアプリケーションを実行すると、次のエラーが表示されます。
CS1525:無効な式用語「。」
これらの機能を有効にするにはどうすればよいですか?
これはMVC 5(5.2.3でテスト済み)で動作し、roslynコードdom Nugetパッケージを追加するだけです
新しい.NET Compiler Platform( "Roslyn")コンパイラをサービスAPIとして使用する代替CodeDOMプロバイダー。これにより、CodeDOM(ASP.NETランタイムコンパイルなど)を使用するシステムで新しい言語機能がサポートされ、これらのシステムのコンパイルパフォーマンスが向上します。
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/
まあ、MVC5があり、VS 2015を最近インストールしました。
CodeDOMプロバイダーパッケージをインストールしましたが、助けにはなりませんでした...しかし、その後、パッケージがフレームワーク4.5のみをサポートし、テスト中にターゲットフレームワークを4.6に設定していることに気付きました-4.5でも動作します.
したがって、ターゲットフレームワークにも注意を払ってください。 4.5をお持ちの場合-パッケージMicrosoft.CodeDom.Providers.DotNetCompilerPlatformをインストールするだけです。ただし、4.5.1-4.6をターゲットとして使用している場合は、web.configセクションを変更する必要があります
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
C#の場合、単にtypeを次のように変更します。
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Visual Studio 2015でも同じ問題が発生していました。ここでの別の答えは、使用したソリューションを暗示していますが、修正を誤って指定しており、明確にすることはありませんでした。
Visual StudioメニューでProjectを選択すると、サブアイテムEnable C#6/VB 14が表示されるはずです。 。このメニューのサブアイテムを選択します。 Nugetから正しいパッケージをダウンロードしてインストールします。この後、Visual Studioを再起動し、ソリューションをリロードします。
これによりプロジェクトプロパティ>ビルド>詳細設定>言語バージョンの選択がC#6に修正されるかどうかを確認できないため、C#6を有効にした後、これを確認することもできますメニューから。
プロジェクトのプロパティを確認し、ビルドに進み、詳細設定を行い、デフォルトではない場合はC#6.0かどうかを確認します。
現在、MVC5とC#6.0の完全なサポートがあり、驚くほどうまく機能します!
最新のMicrosoft.CodeDom.Providers.DotNetCompilerPlatform
をインストールするというアドバイスに従うことも含めて、最終的にWeb.config
のエラーをすべて取得するには、これにrootsystem.codedom
Visual Studio 2015
を設定する必要がありました。
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
ここでVisual Studio
を再起動すると、それが実行されます。