VS2015 新Web项目(C#6)出现CS1617错误的解决

VS2015新增了对C#6的支持.

在新的Web项目模板中通过引入nuget包Microsoft.CodeDom.Providers.DotNetCompilerPlatform:1.0.0并在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>
  </system.codedom>

来提供Razor的C#6.0支持(旧项目也可以通过自己添加来获得支持)

但是在当你修改了目标框架(例如从4.5升级到4.6)之后, 网站将会无法开启并提示

“/”应用程序中的服务器错误。


编译错误

说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误消息: CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default

源错误:

 
[没有相关的源行]

源文件:    行: 0

显示详细的编译器输出:

C:\Program Files (x86)\IIS Express> "C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" /t:library /utf8output /R:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\...

Microsoft (R) Visual C# Compiler version 4.6.0081.0

for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240

error CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default

查看web.config中的配置, 发现已被自动修改为(似乎一般是改cs不改vb, 往低了改会连vb一起改)

  <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.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+">
          <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
    </compilers>
  </system.codedom>

而这是无法正常工作的, 需要手动修改为最初的结果



怀疑这应该是VS的一个bug, 有谁知道反馈渠道的帮忙提一下吧.

时间: 2024-11-11 07:08:50

VS2015 新Web项目(C#6)出现CS1617错误的解决的相关文章

VS2015 新Web项目(C#6)出现CS1617异常的解决

VS2015 新Web项目(C#6)出现CS1617错误的解决 VS2015新增了对C#6的支持. 在新的Web项目模板中通过引入nuget包Microsoft.CodeDom.Providers.DotNetCompilerPlatform:1.0.0并在web.config中添加 <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs"

创建Web项目运行时出小错误及解决方法

1.目录结构 2.各文件内容 index.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <form action="/Servlet" method="

Maven命令行创建web项目,并部署到jobss当中(解决No plugin found for prefix &#39;jboss-as&#39; in the current project and in the plugin groups [org.apache.maven.plugins,问题)

首件创建项目:此处可参照:http://maven.apache.org/guides/mini/guide-webapp.html mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp 将目录切换至my-webapp下,编译和打包: mvn clean package 此时,启动jboss服务器(我的是jboss

System.Web.Mail发邮件引发0x80040217错误的解决过程

 使用System.Web.Mail 写了一个发送邮件程序,一直都工作正常. 最近更换新邮件服务器后,发送邮件时出现0x80040217错误. 从网上搜了一下,有用的结果不多,有说是Web.Mail过时,要改用system.net.mail等等. 后来跟踪代码,发现是进行到验证的步骤时出的问题,于是尝试去掉"@域名",真的可以了. 那为什么不提示用户名错误呢,通过使用控制台telnet测试发现, 新邮件服务的连接,在任何指令出错后都会立即断开,从而引发代码0x80040217错误.

Web项目java.lang.OutOfMemoryError: PermGen space异常解决

接手一个新的Web项目,编译运行(Tomcat版本为7),运行的时候报出了java.lang.OutOfMemoryError: PermGen space的异常,搜了一下这样解释: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域. 为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,sun的 G

asp.net Web项目中使用Log4Net进行错误日志记录

使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能改变应用的日志行为,使得用户可以根据情况灵活地选择要记录的信息. 那么我们如何在Web项目中使用Log4Net呢? 一.基本配置 1.下载Log4Net,地址如下:http://logging.apache.org/log4net/download_log4net.cgi,如下图所示: 2.下载到本地后

Web项目中创建简单的错误处理页面

当应用程序出现错误的时候,如果没有做错误页面处理的话,会直接输出一些敏感的信息出来,有时候甚至会直接将项目所在的物理路径给显示出来,严重缺乏安全性,并且错误种类繁多,页面风格不一,导致用户体验不好,本文介绍如何在web项目中创建错误页面,从而友好的提示错误信息. 一,创建错误页面error.aspx,前台代码如下(可根据实际需要增加元素): <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&qu

myeclipse2017maven Web项目测试controller时报404错误

问题描述: 这是我自己基于SSM框架搭建的一个Maven Web项目,前面一切顺利,单元测试这些都通过了,就是访问不到controller,直接改为访问jsp也不行,页面一直显示404,后来也是百度了好久才找到一个和我问题相同的同志,我们都是需要改WEB.XML的对应的工程名.点击工程右键-->properties-->找到Project Facets-->找到Web Context Root->点击config...,如下图 原文地址:https://www.cnblogs.co

新web项目

1.目录结构 2.1.ManagerController.java 配置平台控制层代码 package com.hkwx.controll; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Htt