各生成專案的概念

2021-06-22 13:39:45 字數 2116 閱讀 6831

讀別人的**,我在乙個類的無參公共建構函式裡加了個messagebox,但單步跟蹤到這個建構函式的時候,並未執行messagebox這句話就跳過去了,這讓我好生奇怪:它有什麼理

由不執行呢?研究半天後恍然大悟:這是乙個類庫專案,而修改後我並未重新生成此類庫——腦子暫時短路的結果。

但在意識到腦子短路之前,我卻考慮了很多:此類繼承自另乙個類,難道是繼承上出了問題?不厭其煩的我甚至啟動snippet compiler,親手寫了個簡單的父類、子類,包括構造

函式的無參、有參、不寫三種情況,把建構函式在繼承中的執行方式重新複習了一遍。結果當然是一切均按預想的流程工作:構造子類物件時首先執行父類建構函式,然後再執行

子類建構函式;如果子類沒有建構函式,表面上看只執行了父類的建構函式,但據說實際上還執行了乙個執行時提供的無參公共建構函式(書上這麼說的,但跟蹤不到,反正啥也

沒乾)。

在腦子恢復正常之後,我意識到應該把vs.net中①生成解決方案(ctrl+shift+f5)、②重新生成解決方案、③生成專案、④重新生成專案、⑤啟動(f5)、⑥開始執行不除錯

(ctrl+f5)、⑦逐語句(f11)、⑧逐過程(f10) 這些概念重新明確一下。前四個是跟目標程式的生成相關,後四個跟程式執行、除錯相關。查msdn:

①生成解決方案(ctrl+shift+f5):只編譯自上次生成以來更改過的那些專案檔案和元件。

②重新生成解決方案:首先「清理」解決方案,然後生成所有專案檔案和元件。「清理」解決方案或專案將刪除所有中間檔案和輸出檔案,只留下專案檔案和元件檔案,以後可以

從這些檔案生成中間檔案和輸出檔案的新例項。

③生成專案:只生成自上次生成以來更改過的那些專案元件。

④重新生成專案:首先「清理」專案,然後生成專案檔案和所有的專案元件。

⑤啟動(f5):應用程式啟動並一直執行到斷點。

⑥開始執行不除錯(ctrl+f5):在不使用偵錯程式的情況下開始執行專案,即斷點不起作用。

⑦逐語句(f11):執行下一行**,如果下一行包含函式呼叫,則在函式內的第乙個**行處停止。

⑧逐過程(f10):執行下一行**,如果下一行包含函式呼叫,則執行整個函式,然後在函式外的第乙個行處停止。

這麼看以上八個概念都很簡單明瞭,沒什麼難的地方,但我想搞清楚的是如果不「生成」,直接執行除錯,比如按f5後vs.net如何處理生成呢?

可以肯定的是,按f5後當前專案肯定要執行生成操作,至於同一解決方案下的其它專案,是否要生成及按何種順序生成,取決於以下幾個因素:

因素一:是否當前專案的依賴項

依賴項若是以.net類庫的形式被新增到當前專案的引用中,則預設情況下並未打對勾;若新增引用時依賴項是以專案的形式新增,則預設就是打了對勾,且為灰顯不能去掉。

vs.net的處理方式:在任何情況下依賴項都會生成,順序上優先於當前專案。

因素二:專案生成順序

專案生成順序受「專案依賴項」對話方塊內的設定影響,應該以相反的順序選擇專案,即最先選擇需要最後生成的專案。

vs.net的處理方式:按照「專案生成順序」中指定的順序生成。

因素三:vs.net 的選項設定中是否選擇了「僅在執行時生成啟動專案和依賴項」選項。

msdn中說該選項影響 ①生成解決方案(ctrl+shift+f5) 和 ⑤啟動(f5) 兩個命令,但經我測試發現影響①、⑤、⑥、⑦、⑧五個命令,其實⑤、⑥、⑦、⑧就vs.net的生成事件而

言是一回事。

vs.net的處理方式:若打勾,則僅生成當前啟動專案及其依賴項;否則將會生成所有專案、它們的依賴項以及解決方案檔案。

至此,專案的生成問題算是搞得比較清楚了,但還有兩個問題不甚明了:

1. 設計乙個類時,空的公共無參建構函式有沒有必要寫?本來是不必要寫的,執行時會預設提供;但若寫了會方便除錯,不會出現跟蹤不到的情況。

2. 如果按照解釋執行的語言、編譯執行的語言來分類,c#應該算哪種呢?.net下有沒有翻譯執行、編譯執行的概念呢?

產品和專案的概念

一 產品和專案的差異 1 生存週期不同 專案的生存週期包括專案的啟動 策劃 執行監控和收尾。專案驗收交付給使用者,並結項後,專案生存週期結束。產品的生存週期類似於人的成長,從出生 產品構思 到成長 產品的版本更新 到去世 產品中止 的過程。產品不存在完成的說法,因為產品是不斷更新的,直到被新產品替代...

QtCreator修改專案的生成目錄

問題描述 使用qtcreator編譯qt工程專案時,有時需求修改編譯過程中生成檔案 makefile o exe等檔案 的存放路徑,如何解決?常見方法 工具 選項 構建和執行中,修改default build directory是不會生效的。正確修改方法如下 在qtcreator中新建工程專案時,將...

C 關於庫專案的生成和使用

如果我們的程式想要使用 匯入 載入 某個dll中的函式,那麼該函式必須在dll中是已經匯出的。首先需要配置需要的lib檔案,之後再採用extern或 declspec dllimport 宣告。配置lib檔案有兩種,一種是在專案屬性中配置,另一種是在程式中加入下述 比如說使用的是a.lib檔案 這兩...