Razor项目在Rider中无法跳转定义及构建报错求助
解决Rider中无法跳转、IntelliSense失效及csproj构建错误的方案
一、修复csproj的MSB4057错误
你的FrontendTemplates.csproj缺少标准Build目标导入,且未包含项目文件,导致构建失败。按以下内容修改项目文件:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')"/> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"/> <PropertyGroup> <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> <RootNamespace>MyProject</RootNamespace> <AssemblyName>MyProject</AssemblyName> <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids> <OutputType>Library</OutputType> </PropertyGroup> <ItemGroup> <Reference Include="Microsoft.CSharp"/> <Reference Include="System"/> <Reference Include="System.Data"/> <Reference Include="System.Drawing"/> <Reference Include="System.Web.DynamicData"/> <Reference Include="System.Web.ApplicationServices"/> <Reference Include="System.ComponentModel.DataAnnotations"/> <Reference Include="System.Core"/> <Reference Include="System.Data.DataSetExtensions"/> <Reference Include="System.Xml.Linq"/> <Reference Include="System.Web"/> <Reference Include="System.Web.Extensions"/> <Reference Include="System.Web.Abstractions"/> <Reference Include="System.Web.Routing"/> <Reference Include="System.Xml"/> <Reference Include="System.Configuration"/> <Reference Include="System.Web.Services"/> <Reference Include="System.EnterpriseServices"/> <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> <HintPath>packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> </Reference> <Reference Include="System.Net.Http"/> <Reference Include="System.Net.Http.WebRequest"/> <Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> <HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll</HintPath> </Reference> <Reference Include="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> <HintPath>packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll</HintPath> </Reference> <Reference Include="System.Web.Optimization"> <HintPath>packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath> </Reference> <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> <HintPath>packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll</HintPath> </Reference> <Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> <HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll</HintPath> </Reference> <Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> <HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll</HintPath> </Reference> <Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> <HintPath>packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll</HintPath> </Reference> <Reference Include="Newtonsoft.Json"> <HintPath>packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference> <Reference Include="WebGrease"> <Private>True</Private> <HintPath>packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath> </Reference> <Reference Include="Antlr3.Runtime"> <Private>True</Private> <HintPath>packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath> </Reference> <Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform"> <HintPath>packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> <Content Include="**\*.cshtml" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets')" /> </Project>
修改说明:
- 添加
ProjectTypeGuids标记为ASP.NET MVC项目,让Rider正确识别项目类型 - 新增
Content节点包含所有.cshtml文件,确保Rider将这些文件纳入项目解析范围 - 导入标准C#和ASP.NET Web构建目标,补上缺失的Build目标定义
二、恢复Rider的跳转和IntelliSense功能
- 还原NuGet包:右键项目 →
NuGet→Restore Packages,确保所有引用包正确安装 - 重新加载项目:右键解决方案 →
Reload All Projects,让Rider重新解析项目结构 - 检查PDB文件:确保DLL所在目录有对应的
.pdb符号文件,无PDB则无法跳转到DLL内部实现 - 清理缓存:执行
File→Invalidate Caches...→Invalidate and Restart,彻底刷新Rider缓存
三、验证修复效果
- 构建解决方案,确认MSB4057错误消失
- 在.cshtml中尝试Ctrl+右键点击C#方法,检查跳转功能是否正常
- 输入代码时,观察IntelliSense是否能正常提示方法和属性
内容的提问来源于stack exchange,提问作者Fab
相关产品推荐
相关产品推荐

