2010-05-28 42 views

回答

1

我認爲定位後面的版本要容易一些。我相信PowerPack 3.0是爲Visual Studio 2005添加的:它包含對模擬VB6 Printer對象和形狀控件的額外支持。


任何誰的瞭解VB6遷移我其他的答案應該停止,因爲我以前說過這個現在在讀......但我認爲這是相關的,所以我再說一遍也無妨。

退房微軟英國advicescreencast解釋淨遷移5個基本選項。決定哪一個最好。人們may建議你在.Net中重寫。對此謹慎 - 你說你的代碼庫很大,這是重寫的危險信號。微軟英國say

執行一個完全重寫,以.NET是更爲昂貴和困難做好[不是轉換] ...我們只推薦這種方法對於少數的情況。

+0

感謝MarkJ。事實上,到目前爲止,我的確有很大的進步。我能夠剝離135 Klines,在剩餘的6K左右使用升級嚮導,並立即編譯(有一些警告)! 然後我添加了一個處理打印的模塊,因爲vb2008不喜歡打印機的hdc屬性,所以我必須在這裏重寫一下。我一次只能看到一個文件,這看起來可行!我很失望,儘管打印看起來像vb.net中的PITA,甚至比vb6還要多。 由於vb2010沒有升級嚮導,因此我使用vb2008 express。 – bosco 2010-06-02 21:26:46

+0

@bosco。你是說你能夠刪除135 Klines的不必要的代碼?哇!剩下的任務確實可行:升級在升級嚮導後編譯的6 Kline程序。幹得好! – MarkJ 2010-06-03 08:08:01

+0

不! :)所有對錶格的調用都是通過「Junction」模塊中的函數完成的。例如 公用Sub FormFooCall(BYVAL動作如串)動作=用Ucase(修剪(動作) 如果動作=用Ucase(修剪(( 「可見=真」))然後 ReferenceFormFoo0:frmFoo.Visible =真 端如果 結束子 所以通過在這個模塊中註釋掉所有的ReferenceForm實例,除了啓動窗體和項目仍然可以在vb6中編譯外,項目中的所有窗體都被註釋掉。一旦窗體消失,任何模塊都可以被刪除,因爲它們只能從形式所以我仍然需要堅持他們都回來! – bosco 2010-06-03 09:05:52

1

我重寫了很多VB6的目前和我」迄今爲止發現的是,以前的開發人員必須使用大量第三方和自定義模塊來實現他們需要的功能,因爲自那時起,大量的第三方和自定義模塊已經包含在.Net的基類庫中。

從我所看到的有沒有簡單的方法從一個遷移到另一個。這些遷移有很多努力。要考慮的最好的事情是,你是否想要逐行或者檢查代碼,記錄核心功能,評估軟件在其生命週期中的工作情況,然後設計新的設計。

這就是我最終做的事情,因爲行重寫的行幾乎是不可能的,也是一個巨大的痛苦。將庫和模塊編譯到COM中以將這些功能帶入.Net應用程序中是一種「McGyver」方法。這就是爲什麼我只記錄一切,理解過程,然後寫成.Net軟件。

具體而言,您試圖維護哪些功能?你之前寫過.Net嗎?

+0

是的我希望很多解決方法的需求會隨着後續版本的減少。 我想保持所有功能,而且這個項目需要持續發展到未來。遷移動機的很大一部分來自學習/使用更新工具集的願望。 OTOH它有點大(140 kloc)的總重寫。我希望一次移植一個文件,從不引用任何其他文件開始,並在移動到下一個文件之前至少編譯代碼。我希望升級工具可以做很多事情。 – bosco 2010-05-28 13:22:45

+1

這是一個很好的開始,與你的項目祝你好運。如果可能的話,我會從一個較小的項目或一些代碼演示開始學習.NET,而不是像這樣大的重寫。如果軟件仍然達到其目的並且不需要改進,那麼我會保留它。這只是我的看法。爲什麼要重寫一些140k行來學習框架? – jlafay 2010-05-28 15:43:53

+0

jlafay的評論是正確的。微軟的建議是在嘗試遷移大型項目之前先從一些小型項目開始。如果不先學習框架,就無法進行良好的遷移。 – MarkJ 2010-06-01 14:14:41

0

根據我的經驗,「遷移」實際上是一個重寫,因此它不會影響您使用的Visual Studio版本。我會用最新的。

+0

但唯一的事情是,vb2010沒有升級嚮導。 – bosco 2010-06-02 21:28:55