WPF 使用.net Core3.1创建窗体程序时,在xaml中找不到基本数据类型的问题解决办法。
本文于2021年8月12日首发于博客园,欢迎阅读,欢迎转载,欢迎留言评论。
一,一直听说微软有个跨平台的框架,叫.net core,可以用C#开发。想着WPF练了这么久,也差不多了,何不拿这两者来练练手,说干
就干。
打开VS ,然后找到上面这个模板:
创建基于.NET Core的WPF窗体应用程序。
二,各种技术,各种操作,玩的不亦乐乎,都可以实现。后来想在xaml中,定义一个静态的资源,资源类型是string。
我记得.net的基本数据类型,都是在mscorlib中定义的。那就尝试在xaml中引入mscorlib,好吧,问题来了!!!
1,在xaml中引入mscorlib,如下图所示(贴了完整的图片,便于您更清晰的了解整个项目的构成):

如您所见,VS的智能感知,找不到这个mscorlib的存在。再想想,是不是没有引入mscorlib类库?一通操作之后还是不行,报各种
奇奇怪怪的错误。
再想想,难道是自己记错了?做个对比,使用framework创建的WPF项目,在xaml中是可以正常使用string类型的呀!如下图所示: 
2,既然可以用,就说明自己没有记错。难道是VS的问题?重启VS,不行,问题依然存在。重启电脑,不行,问题依然存在。
后来对着电脑,看到xaml中,也有错误提示,把鼠标放在报错的代码上,VS会提示“显示可能的修补程序”,如下图所示: 
唉,天啊,我找了两天的问题,就是没注意到这个地方。VS已经提示了,string这个类型,存在于System.Runtime,但是我却
忽略了VS强大的提示功能。
3,后来就引入了Runtime,改成了下面这个样子:

然后再次绑定,就成功的找到资源了。
三,问题反思
1,不知道什么情况,基于.net core的WPF程序的基本数据类型,都跑到了Runtime的下面,
刚开始以为要手动添加引用,后来又想到可能是VS的问题,结果都不是。
2,那么string从mscorlib跑到了Runtime下面,微软应该有个官方的文档声明,我相信一定有的,但是很可惜,我没找到,有知道的
朋友,请帮忙给个链接,多谢。
3,想挖的再深一些,string从mscorlib跑到了Runtime下面,微软是基于什么考虑呢?是.net core跨平台设计的原因,还是其他的原
因,希望路过的大神可以指点一下。
电脑查看不方便?试试关注公众号吧,本博文已同步至微信公众号。


浙公网安备 33010602011771号