CefSharp V43 版本ToolTip功能和工程文件.csproj神祕關係(摸索很久)

廢話不多說,這篇文章寫給玩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一份重寫乾淨的代碼,至於爲什麼作者要這樣呢,我有空翻一翻國外的帖子看看大牛們真正合理的解釋,不過先這樣治標不治本貌似也能繼續用下去。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章