You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio扩展中使用CommunityToolkit.MVVM绑定视图时遇构建错误

解决SourceGenerator生成属性构建报错:The name 'ExceptionMessageText' does not exist in the current context

问题现象

使用CommunityToolkit.Mvvm的[ObservableProperty]源生成器时,IntelliSense显示已自动生成公共属性ExceptionMessageText,但构建项目时报错该属性不存在;仅当XAML视图中绑定DataContext到ViewModel时触发错误,移除绑定则构建正常。

解决方案

1. 调整项目构建依赖顺序

如果ViewModel和视图分属不同项目,需确保ViewModel项目优先于视图项目构建:

  • 右键解决方案 → 项目依赖项
  • 在视图项目的依赖列表中,勾选ViewModel项目,确保编译顺序正确。

2. 清理重建解决方案

源生成缓存可能导致代码识别异常,执行以下操作:

  • 右键解决方案 → 清理解决方案
  • 删除所有项目目录下的bin和obj文件夹
  • 右键解决方案 → 重建解决方案

3. 验证CommunityToolkit包版本

确保安装的CommunityToolkit.Mvvm为最新稳定版,旧版本可能存在源生成与XAML编译的兼容性问题:

  • 打开NuGet包管理器,更新CommunityToolkit.Mvvm到最新版本。

4. 检查XAML命名空间引用

确认XAML中ViewModel的命名空间引用完全正确:

  • 若ViewModel在独立程序集,需补充程序集名称:
    xmlns:viewmodels="clr-namespace:VisGit.ViewModels;assembly=VisGit.ViewModels"
    
  • 同一程序集下需确保命名空间拼写无错误。

原因说明

XAML编译阶段会提前解析DataContext的类型信息,若此时源生成器尚未生成属性代码(或生成的代码未被编译器识别),就会触发找不到属性的错误;而单独运行ViewModel类时,C#编译阶段会优先执行源生成,因此不会出现问题。

验证步骤

可手动检查源生成代码是否生成:

  • 在Visual Studio中打开ViewModel文件,点击解决方案资源管理器顶部的「查看所有文件」
  • 展开路径obj\Debug\net[你的框架版本]\generated\CommunityToolkit.Mvvm.SourceGenerators\CommunityToolkit.Mvvm.SourceGenerators.ObservablePropertyGenerator
  • 查看对应的生成文件,确认是否包含ExceptionMessageText属性的实现代码。如果没有,说明源生成器未正常工作,需检查包安装和项目配置。

内容的提问来源于stack exchange,提问作者stigzler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:20:05