如何在旧版ASP.NET网站(非网站项目)中使用C# 6.0或7.0?

8
我有多个旧ASP.NET Webforms网站(这是从头开始创建一个的方式):enter image description here。它们不是网站项目。
ASP.NET网站似乎停留在C# 5。当尝试使用C#6或C#7的功能时,会出现错误:enter image description here。尝试使用灯泡升级选项失败:enter image description here。尝试在https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version找到的任何其他选项都会失败,因为没有 .csproj 文件或项目属性页中的更改语言版本的选项。
以下是ASP.NET Website上构建选项卡的外观(没有高级按钮):enter image description here
我安装了Microsoft.Net.Compilers NuGet软件包,但没有任何改变。
在ASP.NET网站中是否有可能做到这一点?
3个回答

9
如果您安装了 Microsoft.CodeDom.Providers.DotNetCompilerPlatform,它会更新您的web.config文件,以使用当前版本-当前版本为7.3:
  <system.codedom>
    <compilers>
      <compiler extension=".cs" language="c#;cs;csharp" warningLevel="4" 
        compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" 
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, 
              Microsoft.CodeDom.Providers.DotNetCompilerPlatform, 
              Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <compiler extension=".vb" language="vb;vbs;visualbasic;vbscript" warningLevel="4" 
        compilerOptions="/langversion:default /nowarn:41008,40000,40008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" 
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, 
              Microsoft.CodeDom.Providers.DotNetCompilerPlatform, 
              Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </compilers>
  </system.codedom>

6

右键点击项目,选择属性,选择构建选项卡,单击右下角的高级按钮,选择语言版本,然后单击“确定”按钮。

输入图像描述


1
你好,请查看我刚刚添加的最后一张图片。你会注意到没有“高级...”选项卡。如果这是一个网站项目,你的答案是正确的。 - adinas
2
尝试按照下面的方式修改web.config中的langversion:<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> </compilers> </system.codedom> - akshayblevel
我发现添加“Microsoft.CodeDom.Providers.DotNetCompilerPlatform” Nuget包将会把你的代码行添加到“web.config”文件中,并且将所需的“Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll”文件添加到bin文件夹中,从而解决了这个问题。如果你用这个解决方案回答我的问题,我会标记它为正确答案。 - adinas

1
我遇到了一个项目,它是一个没有.csproj文件的旧asp.net项目。
如果您创建一个新的asp.net网站,您会发现.csproj文件,并且可以愉快地使用C#版本高于5。
所以问题变成了:如何为旧项目生成.csproj文件。
只需创建一个新项目,在Visual Studio中将代码从旧项目复制过来。然后将新的.csproj复制到旧项目中。然后您的旧asp.net项目就更新了。:)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接