我有Visual Studio 2017社区版。这是我为达到此错误而采取的唯一步骤。
我创建了一个新的.NET Core 2.0 / 2.1 Web应用程序(两个版本都会导致错误)\
我选择Web应用程序(模型 - 视图 - 控制器)
创建项目后,我尝试打开生成的项目模板中存在的任何.cshtml
文件,但我收到以下两个错误之一:
(Image)
给定的密钥不在字典中
OR
(Image)
无法加载文件或程序集Microsoft.VisualStudio.Editor.Razor ...“
每当我尝试打开项目中的任何.cshtml
文件时,都会发生这种情况。当我安装并启用剃刀扩展时出现第一个错误,当我关闭剃刀扩展时出现第二个错误(但是根据visual studio,razor现在已集成到VS 15.3中,因此我不需要它方式)。
关于如何解决这个问题的任何想法?我试过了
%LocalAppData%
我确信这只是我没有下载的东西或者我忽略的东西,但我现在真的很茫然所以非常感谢有任何想法的人我会尝试!
答案 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