WPF开发遇XDG0012错误:RESX成员无法识别或访问求解决方案
我之前也碰到过这种诡异的情况——同一个RESX文件里有的资源能正常引用,有的却弹出XDG0012 The member is not recognized or is not accessible错误,明明权限和配置都检查过没问题。结合自己的排查经验,给你几个针对性的解决方向:
检查资源名称的细节:WPF对RESX资源名称的大小写敏感,哪怕只是一个字母大小写不一致,XAML引用就可能失败。另外留意资源名称里的特殊字符,尽量只用字母、数字和下划线,避免空格或其他特殊符号。对比下正常和报错的资源名称格式,大概率能发现差异。
重新生成RESX的代码文件:VS自动生成的
Localization.Designer.cs有时候会出现缓存或生成不完整的情况。你可以先删除这个Designer文件,右键点击RESX文件选择「运行自定义工具」,让VS重新生成对应的访问代码。这一步是解决这类“部分有效”问题的常用手段,亲测有效。核对XAML的命名空间引用:确认XAML中引用RESX的命名空间拼写完全正确。比如你的RESX在
YourApp.Resources命名空间下,XAML里的xmlns:res="clr-namespace:YourApp.Resources"必须准确无误。有时候命名空间写错了,会出现部分资源因名称巧合被误识别,另一部分无法找到的情况。排查资源值的特殊内容:如果报错的资源值包含XML转义字符(如
<、>、&)、多行文本或复杂格式内容,可能导致XAML解析异常。先把报错的资源值改成简单的纯文本测试,如果能正常引用了,再对原内容做转义处理(比如用<代替<)。验证项目文件配置:打开项目的
.csproj文件,检查RESX对应的配置节点:<EmbeddedResource Include="Localization.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>Localization.Designer.cs</LastGenOutput> <AccessModifier>Public</AccessModifier> </EmbeddedResource>确保
Generator、LastGenOutput和AccessModifier配置都正确,避免因项目文件配置异常导致资源生成不全。清理缓存并重启VS:VS的缓存偶尔会出现异常,导致这类莫名其妙的错误。先执行「Build -> Clean Solution」清理解决方案,然后重启Visual Studio,再重新生成项目,很多时候问题就能解决。
内容的提问来源于stack exchange,提问作者Yeji

