Rider2021.2.1开发WPF App报Cannot resolve symbol 'DatePicker'如何处理
问题定性
该问题属于Rider 2021.2.1版本本身的XAML智能感知已知bug,不是项目代码或WPF SDK的问题。
这个版本的Rider在处理WPF隐式命名空间映射时存在缓存缺陷,会随机漏识别PresentationFramework程序集中System.Windows.Controls命名空间下的部分原生控件,DatePicker是触发概率最高的控件之一。Visual Studio使用独立的XAML设计器与索引栈,因此不会复现同类问题。
按优先级排序的解决方法
- 清理缓存重建索引
先关闭Rider,删除项目根目录下的.idea缓存文件夹、bin和obj编译输出文件夹;重新打开Rider后进入设置,在Build, Execution, Deployment > Toolset and Build页面确认MSBuild路径指向本地Visual Studio附带的MSBuild程序,不要使用Rider自带的预览版MSBuild;加载项目后依次执行Clean Solution、Rebuild Solution,等待全量索引完成后再打开XAML文件,绝大多数场景下报错会直接消失。 - 显式声明控件命名空间
如果清理缓存无效,可以在XAML的窗口根节点显式添加System.Windows.Controls的命名空间映射,绕过Rider的隐式映射识别bug,示例代码如下:
return (<Window x:Class="WpfDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" <!-- 新增以下显式命名空间声明 --> xmlns:wpfControls="clr-namespace:System.Windows.Controls;assembly=PresentationFramework" Title="MainWindow" Height="450" Width="800"> <Grid> <!-- 带前缀引用控件即可消除编辑器报错,不影响实际编译运行效果 --> <wpfControls:DatePicker Width="200" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </Window> )
- 升级Rider版本 该XAML识别bug在2021.2.3后续小版本中已被官方修复,直接升级Rider到2021.3及以上的稳定版本,不需要修改任何项目代码即可解决问题。 > 注意:该报错*仅为编辑器层面的智能感知误报*,不会影响项目正常编译和运行,即使不做任何处理,只要代码中引用的是WPF原生DatePicker控件,最终生成的程序运行时不会出现任何控件加载异常。 内容的提问来源于stack exchange,提问作者indekplay
相关产品推荐
相关产品推荐

