无法在Visual Studio 2017中打开任何.cshtml文件

时间:2018-06-07 01:43:15

标签: asp.net asp.net-mvc visual-studio razor

我有Visual Studio 2017社区版。这是我为达到此错误而采取的唯一步骤。

  1. 我创建了一个新的.NET Core 2.0 / 2.1 Web应用程序(两个版本都会导致错误)\

  2. 我选择Web应用程序(模型 - 视图 - 控制器)

  3. 创建项目后,我尝试打开生成的项目模板中存在的任何.cshtml文件,但我收到以下两个错误之一:

      

    Image
      给定的密​​钥不在字典中

    OR

      

    Image
      无法加载文件或程序集Microsoft.VisualStudio.Editor.Razor ...“

  4. 每当我尝试打开项目中的任何.cshtml文件时,都会发生这种情况。当我安装并启用剃刀扩展时出现第一个错误,当我关闭剃刀扩展时出现第二个错误(但是根据visual studio,razor现在已集成到VS 15.3中,因此我不需要它方式)。

    关于如何解决这个问题的任何想法?我试过了

    1. 清除%LocalAppData%
    2. 中的缓存
    3. 运行NuGet重新安装
    4. 更新到.Net Core 2.1
    5. 禁用扩展程序(除了预先打包的扩展程序之外,我只下载了一个扩展程序)
    6. 重新安装VS
    7. 我确信这只是我没有下载的东西或者我忽略的东西,但我现在真的很茫然所以非常感谢有任何想法的人我会尝试!

2 个答案:

答案 0 :(得分:4)

就我而言,我已经禁用了 Razor Language Service Pack ,并忘记了重新启用它,您可以在“工具”>“扩展和更新”下找到它

答案 1 :(得分:1)

无需卸载。前几天发生了类似的事情。最有可能的是你的.csproj文件不同步。

右键单击名为Library

的项目

转到它所说的edit-> Library.csproj (与全球相关的项目名称)

点击它。它会带你到xml文件。

看一下你的Target框架::  如果它说

 <PropertyGroup>
    <TargetFramework>netcoreapp2</TargetFramework>

- &GT;你在aspnetcore 2.0.x上的东西

如果您看到2.1或更高版本,则必须通过定位兼容的软件包来解决这些依赖关系。

这是我的csproj文件的一个例子(目标框架= 2.0) 在我搞砸了2.1.x的sqlite之后。

// --------------------------------------------- -----------

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2</TargetFramework>
    <UserSecretsId>aspnet-MyPoject-xxxxx-xxxCommented-0ut</UserSecretsId>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="Data\Migrations\00000000000000_CreateIdentitySchema.cs" />
    <Compile Remove="Data\Migrations\00000000000000_CreateIdentitySchema.Designer.cs" />
  </ItemGroup>


  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="2.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.3" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.4" PrivateAssets="All" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
    <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.2" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Data\Migrations\" />
  </ItemGroup>

</Project>

// --------------------------------------------- ------------

cli-tool和PackageReference必须与目标框架同步。

我也看到你有同意cookie,所以你可能正在运行更新的版本。

在这种情况下,可能需要使用dotnet cli命令行界面来运行项目。在下拉列表中将IIS Express中的绿色播放按钮更改为项目名称。通过powershell打开项目的实际文件夹。运行这些命令,取消您的webapp目录

dotnet restore然后dotnet run