關於Winform編譯配置那些事

2022-01-30 22:49:20 字數 3050 閱讀 3551

這次我們來聊聊winform編譯中的那些屬性設定,也算對這部分知識的乙個梳理。

debug/release、platform不同設定的內部差別

常規設定

錯誤和警告

將警告視為錯誤

輸出高階設定

在使用visual studio的過程中,工具欄上面的build欄是我們常常開啟顯示而不怎麼去關注的乙個地方。

左邊的debug/release模式主要決定了專案編譯的時候/optimize和/debug對應的值。

當我們使用debug進行編譯的時候,設定分別為/optimize-和/debug:full。

而當使用release模式進行編譯的時候,對應的設定分別為/optimize+和/debug:pdbonly。

而platform的選擇主要決定了編譯出的程式執行平台的差異。

我們在any cpu下拉的配置管理頁面中可以看到如下選項。

itanium(安騰)是intel的乙個ia-64(intel architecture 64)架構處理器。x64即64位平台,x86即32位平台。

當我們選擇32位編譯時會在程式集上包含乙個pe32的頭,而64位編譯會新增乙個pe32+的頭,比較如下。

所以我們一般發布版本時選擇release+any cpu的模式進行編譯,而知道了這些編譯配置還遠遠不夠,我們再看看vs提供的更豐富的配置。

我們在專案上右鍵選擇屬性或者使用快捷鍵alt+enter開啟屬性頁面,切換到build選項。

我們先來看常規設定的部分。

首先我們看條件編譯符號的三個配置:乙個自定義和兩個自帶的debug和trace。

我們的測試**如下。

1static

void main(string args)

2 使用條件編譯可以很方便的編譯出不同邏輯的程式,編譯除錯和跟蹤**執行。

在上面的**中,定義了乙個自定義的符號parry_debug並使用了它,還測試了debug和trace的使用。

這是都勾選並填寫上自定義符號的執行結果,自定義的符號支援多個,值以逗號隔開填寫。

這是三個選項都關閉的運**況,我想你應該能看懂這三個配置的用途了。

platform的選擇和是否優化**的前面已經提到過了,就不再說了。

是否允許不安全**這決定了是否可以在**裡使用unsafe的**,可以使用下面的**測試。當關閉的時候,下面的**是不能編譯通過的。

此設定定義了編譯時提示出來的警告的級別,從0~4,4最高:提示所有的警告,0不提示任何警告。

具體的定義如下:

而取消警告,這是針對上面的選擇,剔除掉不想顯示的警告,填入對應的錯誤**號即可。

如cs3009這樣的等等,所有的錯誤和警告**看這:msdn錯誤和警告**定義。

這一條值得說一說,有句話叫「警告即錯誤」,我們在開發時一般勾上all選項進行編譯,強制所有的警告都當成錯誤,必須都解掉才能編譯通過。

當讓你也可以像上面的選擇設定一樣,跳過某些的確不需要去關注的警告case號。

或者就是預設的關閉此功能。

我們建議預設選上all,使得自己的**更加健壯與完美。

輸出路徑在多專案自動編譯的時候會使用到,可以實現一次編譯將需要編譯出來的檔案都整理到乙個地方去,而不需要到乙個個專案的bin資料夾去拿。

勾選上xml文件檔案後,**中的注釋內容都將以xml檔案的形式編譯出來,在後來你做自己專案類庫的help檔案的時候會很有用,當作為類庫給別人使用的時候,別人在vs裡呼叫的時候也能很好地看到你的注釋。

註冊 com 互操作:指示託管應用程式將公開乙個 com 物件(可呼叫 com 的包裝),以使 com 物件可以與託管應用程式進行互動。必須將此應用程式「專案設計器」的應用程式頁中的「輸出型別」屬性設定為「類庫」,才能使「為 com 互操作註冊」屬性可用。有關可以包含在 visual c# 應用程式中並公開為 com 物件的示例類,請參見com 類示例(c# 程式設計指南)。

生成序列化程式集:指定是否為程式集中的型別建立xml序列化程式集,主要用於改進 xmlserializer 在序列化或反序列化指定型別的物件時的啟動效能。

關於高階設定的部分,因為很少用到,可以參照msdn裡面的詳細解釋。

會偶爾用到的可能是檢查演算法上溢/下溢:指定不在 checked 或 unchecked 關鍵字範圍內並且產生的值超出資料型別範圍的整數演算法語句,是否會導致執行時異常。

關於Winform編譯配置那些事

這次我們來聊聊winform編譯中的那些屬性設定,也算對這部分知識的乙個梳理。debug release platform不同設定的內部差別 常規設定 錯誤和警告 將警告視為錯誤 輸出高階設定 在使用visual studio的過程中,工具欄上面的build欄是我們常常開啟顯示而不怎麼去關注的乙個地...

C 編譯那些事

最近想從pcl庫中繼承類進行改寫,然後遇到了很多問題,這裡記錄一下,自己是菜鳥,編譯什麼的都不太懂。我們一般都是.cpp和.h的形式,pcl是在.h中定義,然後在.hpp中實現,cpp的作用我現在也沒搞明白,還有涉及預編譯什麼的,蒙 從庫的.h和.hpp分別複製了檔案出來,命名成自己的,繼承類也改了...

關於VUE路由配置跳轉的那些事

1,使用路由前先在專案中安裝路由,命令 npm i vue router 2,在模組中使用 import vue from vue import vuerouter from vue router 引入依賴中的vue和vue router vue.use vuerouter 模組中安裝路由功能 3,...