2012-04-20 202 views
1

可能重複:
Best Strategy for moving from VB6 to .NET
Conversion tool comparisons for visual basic 6.0VB6代碼升級

是否有一個很好的工具,任何人都可以推薦給商業VB6應用程序轉換爲VB.NET應用。我發現了一些免費的和一些商業的,但是找不到任何試圖失敗或嘗試成功的開發者的評論和意見。

有什麼複雜的?我知道.NET使用託管代碼和多線程的公寓等,而VB6是基於COM。

+2

.NET應用程序支持STA就好了。不幸的是,[購物問題是堆棧溢出題外話](http://blog.stackoverflow.com/2010/11/qa-is-hard-lets-go-shopping/)。 – 2012-04-20 20:20:01

+0

@Cody Gray,謝謝你的建議。我已經閱讀過這個頁面:購物問題與Stack Overflow相關。我具體詢問開發人員的升級經驗,而不是如何升級。 – w0051977 2012-04-20 20:26:14

+0

然後瀏覽[常見問題]:開放式和討論式的問題也不適用於此。 – 2012-04-20 20:26:35

回答

4

不要這樣做。不要轉換。做一個重寫。對不起,但即使代碼可以轉換,但並不意味着它應該被轉換。

請以任何地方清潔的代碼的名義花費資源時間讓它正確寫入。查看這個作爲清理代碼的機會,並利用一切.Net帶來的優勢......

我真的不在乎,如果我得到負面rep'd這一個。如果我說服一家公司重寫而不是轉換,這是值得的。

+1

我同意這一點。你有沒有升級(不重寫),如果是的話;什麼是併發症? – w0051977 2012-04-20 20:33:14

+0

我見過輸出的代碼。這不是一個複雜的問題,因爲它是從一種不關注OOP的語言轉換爲圍繞它設計的語言,而是將轉換後的代碼「平坦化」,因爲每個人都生活在一個類中in。 – 2012-04-20 20:36:21

+1

我明白了。面向對象是前進的方向,而不是基於對象。有問題的VB6應用程序有很多類(54)。你是否說過他們將通過與你使用的工具合併成一個? – w0051977 2012-04-20 20:38:53

1

幾乎任何免費工具都可以完成轉換代碼的工作。你得到的結果並不是很好,無論你使用什麼工具,因爲VB.NET代碼與VB6代碼完全不同,儘管語法相似。即使你使用翻譯工具,你也應該徹底清理代碼。

+2

我所知道的只有一個免費工具 - 微軟 - 和它的不足。它留下很多工作要手動完成。你在想什麼?我會建議任何代碼清理應該以務實的方式完成,集中在需要改變的代碼上,比如對遺留代碼的任何重構。任何徹底的清理都需要提供節約來付出代價。 Theres有投資時間清理不太可能被改變的代碼的危險。 – MarkJ 2012-04-21 05:46:34

1

Visual Studio在菜單File > Open > Convert...中有一個集成的轉換工具。

如果您的VB6項目結構良好且評論充分,並且您是兩種語言(VB6和VB.NET)的專家,那麼您可以嘗試一下,否則轉換可能會變成一場噩夢。無論如何,在轉換之後你將不得不手動修復許多事情。


使用谷歌搜索Language Changes for Visual Basic 6.0 Users將給你有用的鏈接,涵蓋兩種語言之間的差異。

+2

這也是值得考慮的商業轉換工具。它們的存在是因爲微軟的轉換工具離開了這麼多工作要手動完成。值得一看,如果你有大量的VB6 – MarkJ 2012-04-21 05:52:53

+0

轉換工具只存在於Visual Studio 2008和更早版本。它已被刪除](http://msdn.microsoft.com/en-us/vstudio//ms788233)在Visual Studio 2010中。 – MarkJ 2012-07-07 19:30:19

3

這是我對重複問題(如CW)的答案的副本,因爲我想回復當前在這裏排名最高的「始終重寫」答案。

我的建議是不要低估轉換的努力 - 對開始重寫非常謹慎。這是一個常見的陷阱,要樂觀地開始,早日完成固定舊架構中一些着名缺陷的早期進展,然後陷入多年來剛剛被視爲理所當然的功能陷入困境。此時你的管理開始變得棘手,一切都會變得很不舒服。

...這是一個博客帖子由Microsofty是somewhat agrees with me

許多公司我.NET初期曾與第一次看的強烈願望,以改善部分重寫驅動底層架構和代碼結構的同時,他們轉移到.NET。不幸的是,其中許多項目遇到了困難,有些項目從未完成。他們試圖解決的問題太大了......

因此,我很快成爲遷移或重用的粉絲,作爲大多數公司的正確方法。有趣的是,與過去相比,重寫是一個風險較小的選擇。許多仍然擁有重要VB6項目的公司現在也擁有在其他項目上獲得的強大的.NET技能,改進了軟件開發實踐(包括自動化測試 - 必須爲重寫的恕我直言),甚至花費時間將VB6的代碼元素重構爲最近6年。也就是說,我仍然將重寫放在大多數公司的遷移或重用之下。從一個優秀微軟webpage

執行一個完全重寫,以.NET

報價是更爲昂貴和困難做好[不是轉換] ...我們只推薦這種方法對於小情況的數量。

還擁有著名的VB專家丹Appleman said

在大多數情況下,移植[VB6到VB.NET]是愚蠢的錢 完全是浪費。

said而回:

的最糟糕的戰略失誤 ,任何軟件公司可以讓[是 來]決定從 從頭重寫代碼。

有關遷移的其他一些有用鏈接,包括指向另一本免費微軟書籍的鏈接。 OneTwoThree
微軟page包括他們的回答「如何遷移」的屏幕錄像

+1

+1我可以在VBA上獲得您對VSTO升級的快速意見嗎,您認爲小型VBA項目值得轉化嗎?以及如果(或何時)VB6運行庫不會在最新的Microsoft操作系統上運行會發生什麼?那麼很多公司將沒有選擇升級或使用舊的操作系統。 – 2012-04-21 09:24:26

+1

任何你可以考慮重寫的小項目。我對VSTO一無所知,抱歉 – MarkJ 2012-04-21 12:46:32