【发布时间】:2017-10-12 04:15:51
【问题描述】:
经典的 ASP.NET Web 窗体项目,最初是在 DotNet 2 中完成的,并且多年来一直在升级(现在在 DotNet 4.7 上,表面上是 C# 7)。真是一团糟,但我继承了一些东西。
直到不久前,我一直在 DotNet 4.6.2 下使用 C# 6,一切运行良好。不幸的是,在一系列 DotNet 版本交换中,为了弄清楚为什么某些(其他)事情不起作用,VS 2015 社区突然失去了它正在使用 C# > 5 的提示,并且突然抱怨代码(字符串插值等)不是有效的 C# 5。
它使用 C# >6 功能编译得很好,所以很明显编译工作正常,但 VS 认为我仍在使用 C#
很久以前,当我迁移到 DotNet 4.5.2 和 C# 6 时,我已经安装了 Microsoft.CodeDom.Providers.DotNetCompilerPlatform。我没有使用菜单选项(忘了那个);我直接从 NuGet 安装它。尝试强制重新安装它,没有任何变化。尝试删除包文件夹并恢复包,也没有帮助。
我的属性页的“构建”部分没有“高级”按钮。请不要这样的建议,因为它对我没有用。
我的 Web.Config C# 条目(很好地分解):
<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=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
【问题讨论】:
-
听起来您可能拥有旧版本的 Visual Studio(您的构建属性中没有“高级”按钮,无法识别新代码库)。你运行的是什么版本的 VS?
-
Visual Studio 社区 2015 版本 14.0.25431.01 更新 3
-
下次不要交换 .NET 版本。你只能引起问题。反正VS 2015不能用C# 7
-
切换回 DotNet 4.6.2 和 C# 6 没有区别。我仍然收到 VS Intellisense 抱怨 C# 6 项目(例如空传播运算符)的许多错误。并且使用 C# 7 代码在 C# 7 上运行该站点工作得很好(调试、本地测试和生产),所以我猜你是在谈论某些工具,例如 Intellisense,而不是任何真正的开发能力。跨度>
-
更正:我在另一个使用 VS 2015 的 MVC 5 项目中使用 DotNet 4.7 和 C# 7,我遇到的问题为零。调试、本地和生产工作都很好,即使使用 C# 7 特定代码,Intellisense 也能像冠军一样工作。看起来我遇到的任何 > C# 5 问题都与这个遗留项目有关。
标签: c# asp.net webforms c#-6.0 c#-7.0