【问题标题】:Can't open any .cshtml file in Visual Studio 2017无法在 Visual Studio 2017 中打开任何 .cshtml 文件
【发布时间】:2018-11-16 19:34:59
【问题描述】:

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

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

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

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

    (Image)
    给定的键不在字典中

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

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

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

  1. 正在清除%LocalAppData% 中的缓存
  2. 运行 NuGet 重新安装
  3. 更新到 .Net Core 2.1
  4. 禁用扩展(除了预打包的扩展,我只下载了一个)
  5. 重新安装VS

我确定这只是我没有下载的东西或者我忽略了的东西,但我现在真的很茫然,所以如果有任何想法我可以尝试,我将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    就我而言,我之前禁用了 Razor 语言服务包,忘记重新启用它,您可以在工具 > 扩展和更新下找到它

    【讨论】:

      【解决方案2】:

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

      右键单击名为 Library 的项目

      转到显示编辑的地方->Library.csproj (您的地球项目名称)

      点击那个。它会带你到一个带有 xml 的文件。

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

       <PropertyGroup>
          <TargetFramework>netcoreapp2</TargetFramework>
      

      -> 你在 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

      【讨论】:

      • 这是正确的提示:在我的例子中,我将 VS 2017 升级到最新版本并创建了一个 ASP.NET Core 2.1 项目,但忘记将安装的 2.0 SDK 更新到 2.1。安装 .NET Core 2.1 后一切正常 :)
      • 很高兴你修复了它。
      • 如果您想知道如何检查您的 .Net 核心版本,请在命令提示符 C:\Program Files\dotnet\shared\Microsoft.NETCore.App 中运行此路径
      猜你喜欢
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多