Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在VS 2017中使用C#6.0功能_C#_Visual Studio_Asp.net Core Mvc_Visual Studio 2017_String Interpolation - Fatal编程技术网

无法在VS 2017中使用C#6.0功能

无法在VS 2017中使用C#6.0功能,c#,visual-studio,asp.net-core-mvc,visual-studio-2017,string-interpolation,C#,Visual Studio,Asp.net Core Mvc,Visual Studio 2017,String Interpolation,我正在使用Visual Studio 2017和一个针对.Net Core 2.0框架的MVC项目。在视图中,我得到了插值字符串错误以及异步函数的错误 当我第一次收到它时,我在Properties->Build->Advanced中更改了语言版本,从4.0编译到了7.1,但运气不好。我还发现了另外两个解决方案,它们是安装nuget软件包Microsoft.Net.Compilers和另一个Microsoft.CodeDom.Providers.DotNetCompilerPlatform。在安装

我正在使用Visual Studio 2017和一个针对.Net Core 2.0框架的MVC项目。在视图中,我得到了插值字符串错误以及异步函数的错误

当我第一次收到它时,我在Properties->Build->Advanced中更改了语言版本,从4.0编译到了7.1,但运气不好。我还发现了另外两个解决方案,它们是安装nuget软件包Microsoft.Net.Compilers和另一个Microsoft.CodeDom.Providers.DotNetCompilerPlatform。在安装了这两个包之后,我的视图中仍然存在错误

我在我的控制器中快速测试了语法,它看起来很好,并且没有抛出错误。我想当你安装新版本的VS时,你会得到最新版本的C#?我需要安装C#编译器还是什么

这是导致问题的代码:

<p class="text-center">
    @if (item is Jamboree)
    {
        ((Jamboree)item).EventDate.Date.ToString();
    }
    else
    {
        $"{((Shootout)item).EventBegDate.Date} thru {((Shootout)item).EventEndDate.Date.ToString()}";
    }
</p>

@如果(项目为大露营) { ((大露营)项).EventDate.Date.ToString(); } 其他的 { $“{((枪战)项目).EventBegDate.Date}到{((枪战)项目).EventEndDate.Date.ToString()}”; }


解决您面临的两个问题:

1) 在视图中使用async/await

在视图中不可能使用async/await。您应该尝试在控制器中执行此操作。看

2) 插值字符串的使用

我认为这真的只是因为你的问题中的一个语法错误。您需要用
@()
环绕字符串才能打印它们。如果它是一个潜在不安全的值(如来自数据库/用户的数据),则应该用
Html.Encode()
来代替

<p class="text-center">
    @if (item is Jamboree)
    {
        @(((Jamboree)item).EventDate.Date.ToString())
    }
    else
    {
        @($"{((Shootout)item).EventBegDate.Date} thru {((Shootout)item).EventEndDate.Date.ToString()}")
    }
</p>

@如果(项目为大露营) { @(((大露营)项).EventDate.Date.ToString()) } 其他的 { @($“{((枪战)项目).EventBegDate.Date}到{((枪战)项目).EventEndDate.Date.ToString()}”) }


由于我在该视图中收到了太多错误……我甚至没有尝试在视图中执行错误,因此我创建了另一个项目,并将所有内容复制到新项目中。现在一切都像一个魔咒。我认为项目出了问题……不确定是什么。

安装CodeDom包后尝试重新启动VS。@Amy-谢谢Amy的建议。只是尝试了一下,但没有成功。你的控制器中的C#6代码有问题吗?这可能是特定于您的Razor配置@KevinSecrist-不,我似乎对控制器中的C#6代码没有任何问题。我在控制器中测试了字符串插值,它没有出错。我的剃须刀配置可能有什么问题?我的视图中还有其他问题,比如它无法识别“Model”、“ViewData”或有时是“@Model”,或者像现在输入视图的实际模型。在我的其他观点中,这不是一个问题。在我创建的第一个视图中,它有红色的曲线,但它自己消失了,但这个视图没有。谢谢您的帮助。@cnotes您的视图文件夹中有一个web.config。请将其粘贴到问题中。在“我的依赖项”列表中,Microsoft.CodeDom.Providers.DotNetComplierPlatform条目旁边有一个黄色三角形,表示它是使用.net 4.6.1版本而不是目标framework.netcoreapp 2.0版本还原的。我需要另一个版本吗?或者,我该如何从这里开始?这可能只是一个警告,.NET Framework 4.6.1与.NET Core 2.0兼容,并且没有直接针对.NET Standard 2.0的软件包版本。您是否将此添加到web.config?它将位于项目的根目录中。我的项目中没有web.config。Net Core 2.0使用csproj文件进行配置。我需要在我的项目根目录中添加一个web.config文件,然后添加你建议的代码吗?@cnotes我认为codedom的内容可能不相关,我已经重写了我的答案。我使用
dotnetnewrazor
创建了一个全新的项目,能够很好地使用插值字符串。但是,请确保已安装VS15.3和.NET Core SDK 2.0,以确保安全。感谢您的帮助。我有VS15.3,我将升级到15.4,安装了SDK 2.0。我必须弄清楚为什么ViewData和Model一直说的在我的视图中不存在于当前上下文中……这是我的主要问题。如果你对此有什么想法,请告诉我。再次感谢!!!