2010-03-28 33 views
4

我必須接管一個用vb.net編寫的項目,其中包含超過40萬行代碼以嚴格關閉模式編寫。我想在我做其他任何事情之前首先嚴格按照選項構建它 - 也許可以將它轉換爲C#。我發現有成千上萬行代碼引發了編譯錯誤,主要是關於隱式類型轉換。將選項嚴格關閉代碼轉換爲選項strict的工具?

如果我不想手動更正每一行,是否有任何工具可以幫助它在嚴格選項模式下進行編譯?因爲將CStr/CInt調用自己添加到代碼的每一行非常痛苦。

+3

爲什麼任何人都想將所有生產代碼轉換爲C#?我告訴你我討厭Java,但是如果我繼承了一個Java程序,我不會將它轉換成VB.NET或任何其他語言。處理它。 – AMissico 2010-03-28 12:11:19

+0

我想要的是將壞代碼轉換爲好代碼。即使我必須堅持使用VB.net,並且不要將其轉換爲C#,我仍然希望它的選項嚴格。 – deerchao 2010-03-28 15:45:16

+0

經過一段時間的研究,我決定一次將選項嚴格添加到一個文件中,並將其編譯,直到所有文件都被轉換。 真的很可惜我找不到任何工具來使這更容易。 – deerchao 2010-04-06 01:48:14

回答

0

所以你想同時使用Option Strict和不使用它?

我會告訴你什麼:首先將Option Strict設置爲On,然後在Warning Configurations下將「Implicit Conversion」條件從「Error」更改爲「Warning」(或「None」)。然後你會看到配置說:Option Strict - 「Custom」。

但是不要欺騙你自己:這個自定義設置不是嚴格的,因爲它允許隱式的事情發生。 你需要問自己:「爲什麼我要在選項Strict下編譯?」。

+0

不,我不想欺騙我自己。我希望它成爲真正的選項嚴格的代碼,但不是手動 - 添加CInt,CStr到每個imply tpe轉換。 – deerchao 2010-03-28 15:43:07

+0

它應該手動完成,否則它只是一個僞造的嚴格代碼。所有縮小的轉換必須手動檢查以確保它們不會拋出運行時錯誤。 – 2010-03-28 16:13:54

+0

我只想要VB編譯器已經做了什麼來使它在代碼中顯式地工作。猜猜這太難了.. – deerchao 2010-04-23 04:17:17

5

只需添加CInt或CStr或convert.tostring就沒有任何好處。您需要根據具體情況逐個查看設計,並找出它們爲什麼數據類型從頭開始不匹配。

3

混合和匹配如何讓你運行。 這是我認爲你應該做的。 將項目設置設置爲「Option strict On」 所有單個的.vb文件出現編譯錯誤...將「Option strict Off」作爲該文件的第一行。 (這將覆蓋項目範圍設置)

您現在有一個編譯項目。

下一個工作是當你有時間選擇一個單獨的文件(搜索「Option strict Off」)(或者因爲其他原因修改文件時) 從單個文件中刪除「Option strict Off」讓VisualStudio自動更正標籤,爲您解決錯誤。