我刚刚开始在Visual Studio 2017中使用我的旧解决方案.只需打开旧IDE中的解决方案即可无缝工作.c#应用程序项目现在默认为c#7.0编译器.这些项目的属性页面(编译/高级)可以轻松选择编译器的目标语言版本,默认为最新版本.
我找不到在asp.net web项目中启用c#7.0的方法.如果我写一个如下声明:
if (int.TryParse("1", out int myInt)) { ... }
Run Code Online (Sandbox Code Playgroud)
IDE警告我说我需要使用该语言的7+版本.
我对这个主题的研究表明,我应该定位web.config文件的system.codedom编译器区域中的特定c#版本,以便定位最新的Roslyn版本.
我现在拥有的是:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
Run Code Online (Sandbox Code Playgroud)
针对c#6的目标是什么.只要我已经使用nuget下载了最新的Roslyn,c#7的正确设置是什么?
更新 下面是Web项目可用的编译选项的屏幕截图(它是意大利语VS2017,但应该很容易理解).没有可能在那里选择目标c#版本.
我一直在做的一个项目从 .NET Framework 4.6.2 升级到 4.7.2。在构建时,在不是我的代码的文件中,我收到以下错误:
我还在项目属性的构建选项卡中看到了相同的错误。
![[2]](https://i.stack.imgur.com/3STCR.png)
我不知所措 - 我已经搜索了错误并且结果是空的。有没有人遇到过和/或解决过这个问题?
我正在使用 Visual Studio 17(版本 15.8.5),我的项目面向 .NET Framework 4.8,我尝试设置 C# 版本以使用(通过“属性”窗口中的“构建”选项卡)C# 7.3(这是可以从下拉列表)。但是,构建项目会报告问题标题中的失败。我甚至试过7.0和C# latest minor version,所有这些报告故障也是如此。
貌似环境支持最高版本6(C#6.0)?
我试过安装两者Microsoft.Net.Compilers v3.6.0,Microsoft.Net.Compilers.Toolset v3.6.0但它没有改变。
我想像以下简单代码一样使用模式匹配功能:
object o ...
if(o is int c){
//do something with c (cast to int) ...
}
Run Code Online (Sandbox Code Playgroud)
更新:
奇怪的是,如果我创建一个全新的 ASP.NET MVC 项目,它只是使用 C# 7.3 集编译正常。所以看起来我正在处理的特定项目有问题。为了更好的诊断,我想通过这个链接在这里分享这个项目https://sites.google.com/site/ngaodaantoi/files/WebApiAuth.zip?attredirects=0&d=1
建议您使用 VS 2017 来帮助可能重现该问题。