web-dev-qa-db-ja.com

C#6.0を使用するためのカミソリビューエンジンの作成方法

現在、私のカミソリビューエンジンは、「言語バージョン6以降を使用してください」というエラーをスローします。それはちょうど私に指針を与える再研ぎ器かもしれません。しかし、カミソリでC#6.0を使用するにはどうすればよいですか。 csファイルの残りのソリューションでは、新しいバージョン7のすべての機能を使用できます。

38
MoXplod

これは、プロジェクトが.netフレームワークの新しいバージョンにアップグレードされたときのweb.configのテンプレートのバグによるものだと思います。

web.configに移動して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=\&quot;Web\&quot; /optionInfer+" />
</compilers>
21
Bradley Uffner

これを4.5.1プロジェクトから実行している場合、4.5.2にアップグレードすると修正される場合があります。

そうでない場合は、このNuGetパッケージをインストールして、新しい機能を提供することをお勧めします:Microsoft.CodeDom.Providers.DotNetCompilerPlatform

そのため、次のようなことを行います。

<p>@Model.Person?.Name</p>

うまくいくかもしれない。そうでない場合は、次のように明示してみてください。

<p>@(Model.Person?.Name)</p>
13
Maxime Rouiller

RazorEngineテンプレートでC#6機能を有効にするための最良のステップバイステップの手順は次のとおりです。 https://github.com/Antaris/RazorEngine/issues/363#issuecomment-27310618

そこに記載されていないのは、app.configにコンパイラセクションを追加するときに、バージョン番号がインストールするパッケージのバージョンと一致することを確認することです。コメントではバージョンは1.0.3でしたが、インストールしたパッケージには1.0.4が含まれていたため、次のようにする必要がありました。

<system.codedom>
<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
</compilers>
3
mscrivo

他の答えは非常に良いですが、この問題の手順を明確に明確にする短い短い記事を見つけました: https://cpratt.co/using-csharp-6-or-7-with-mvc-5 /

要するに:

  1. パッケージマネージャーコンソールでInstall-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

  2. 最後に次の行を使用してWeb.configをチェック/変更します。

<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 /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.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:15 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> </compilers> </system.codedom>

3