CefSharp V43 版本ToolTip功能和工程文件.csproj神秘关系(摸索很久)

来源:互联网 发布:淘宝怎么买高仿包包 编辑:程序博客网 时间:2024/05/02 05:04

废话不多说,这篇文章写给玩CefSharp已经至少会看Demo的进阶级玩家,当你对这个开源浏览器架构捣鼓非常开心的时候,你会发现问什么官方的WInform Demo完美的实现了网页title属性也就是自带Tips,而你自己拿了他的demo怎么重新造也造不出同样效果时,那么恭喜你和我一样都被坑了。


网上的CefSharp文章本来就少,中文几篇说ToolTip功能的还是比较老的CefSharp版本,但是现在我正在使用的事CefSharp V43的版本,完全帮不了我,于是发现官方自带Demo也就是CefSharp.WinForms.Example这个工程好像自带就实现了,但是代码里怎么都找不着,所以自己还是不知道怎么实现,别跟我说实现接口 CefSharp.IDisplayHandler就可以和重写bool OnTooltipChanged(IWebBrowser browserControl, string text)这方法,根本不是这样的,这可能是官方的bug他根本永远不会触发这个OnTooltipChanged函数,那Demo怎么就可以呢,经过一个一个文件的比对,终于发现和工程文件.csproj有直接的关系。


实际上我不停的对工程文件.csproj我找到了真正的线索,如果用记事本打卡手动进行更改项目的配置,那么没问题,结果是很正常的,但是如果我是利用VS自身的配置功能来更改项目的一些属性例如说删除一些cs文件,那么问题里面就出来了,你发现你再也生成不出有自带ToolTips实现的CefSharp,原因是VS自身配置功能有可能会导致.csproj的重新生成,一旦重新生成将不再是一开始的.csproj文件。

如何避免:不要再使用VS配置工具来配置此项目,直接打开记事本手动配置。

证据:实际即使你把一个CS文件移除项目,再添加回来,结果MD5值和之前的那个文件已经不一样了


也就是说只要这个工程文件不变(不变不仅仅是里面内容不变而是这个文件不是VS新生成出来的而是原来的文件),那么ToolTips似乎就可以自动实现,完全不用敲任何一行代码,我猜可能是那边C++实现做了一些对EXE清单里秘钥的判断,所以才导致必须使用原工程,所以后我后续的做法也是把这个工程Copy一份重写干净的代码,至于为什么作者要这样呢,我有空翻一翻国外的帖子看看大牛们真正合理的解释,不过先这样治标不治本貌似也能继续用下去。


1 0
原创粉丝点击