日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

修复被破坏的 vs 工程设置

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 修复被破坏的 vs 工程设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緣起

前幾天打開工作項目進行編譯,沒想到居然報錯,明明前一天編譯還正常的。簡單排查后,臨時修復了問題。但是今天新建工程時居然還有相同的問題,是可忍熟不可忍?本文記錄了排查過程,希望對各位小伙伴兒有幫助。話不多說,上菜。

初遇錯誤

不方便使用實際工程截圖,就用我新建的測試工程吧,提示的錯誤是一樣的。

我的第一反映是,難道 SDKDDKVer.h 被意外刪掉了?趕緊使用 everything 搜一下。

本地有這個文件,而且這個文件的位置看上去沒問題,但是為什么編譯的時候會提示找不到這個文件呢?看看工程配置吧。

查看工程配置

在選定的工程上右鍵,屬性 打開工程屬性頁,并查看 配置屬性, VC++ 目錄,包含目錄 的值,如下圖。

當看到 BCG 相關的字眼時,我突然想起來最近剛裝了 BCG,不會是 BCG 把包含路徑給弄壞了吧?在繼續調查之前,先確認一下這些值指向的路路徑確實沒有一個路徑里包含 SDKDDKVer.h 。

查看包含目錄的值

在 vs 中,$() 包含的值是宏,會展開成實際的值。點擊 宏(M)>>,就可以查看每個宏對應的值了。

經過一番查看,確實沒有一個宏對應的路徑包含 SDKDDKVer.h 。看來確實是 BCG 給弄亂了!

臨時解決

因為項目比較緊,從同事那拷貝了正確的包含路徑,編譯,通過!這個問題暫時就放下了。沒想到……

再遇此錯誤

今天準備編寫簡單的測試代碼,于是新建一個工程,沒想到編譯時有報了同樣的錯誤。

根據上次的調查結果,是 BCG 把包含路徑給弄亂了。簡單查看工程屬性中的包含路徑確認了這點。

新建工程也出了同樣的問題,說明修改的是公共的位置。趁著周末有時間,正好調查調查 BCG 是怎么把自己加到包含目錄里的。

追本溯源

很快腦子中浮現了兩個思路:

  • 卸載 BCG 后,重新安裝,在安裝的過程中使用 procmon 監視安裝過程中對文件和注冊表的寫操作。

  • 直接在本地文件和注冊表中搜索包含路徑中出現的 BCG 相關的關鍵字。

  • 我采用了第二個思路。先嘗試在文件中搜索,如果搜不到再到注冊表中搜索。說干就干,先在工程文件中搜索bcgpro,如下圖:

    沒搜到,在意料之中。新建工程的時候,應該會從某個公共的位置讀到這個值。

    正如我在之前文章中介紹的那樣,.vcxproj 文件中可以通過導入 .props 文件引入一些屬性。基本上每個新建的工程都會有一些默認的導入項,如下圖:

    BCG 會不會修改的這些文件中的一個呢?請出 FileLocator,并按下圖輸入關鍵字搜索,很幸運,搜到了。

    打開 Microsoft.Cpp.Win32.user.props 查看,如下圖:

    果然被 BCG 改動過了!

    徹底修復

    在其它機器上找一份沒改動的文件替換,關閉工程后再次打開編譯,一切正常!在 vs 中新建一個工程編譯,也正常!至此,我們從根本上解決了問題!

    總結

    • 在 vs 中 $() 包圍的值是宏,可以展開成實際的值。

    • .props 可以指定一些屬性,比如增加一些自定義的包含路徑。

    • FileLocator 搜索文件內容真是好用!強烈推薦!

    參考資料

    《Inside the Microsoft Build Engine —— Using MSBuild and Team Foundation Build》

    歡迎留言交流!

    感謝你的分享,點贊和在看

    總結

    以上是生活随笔為你收集整理的修复被破坏的 vs 工程设置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。