tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルVB6からの移行時にソリューション化
記事No5665
投稿日: 2007/06/20(Wed) 13:19
投稿者ダンボ
VB2005勉強中です。
勉強のために、VB6.0で作ったプログラムをVB2005に移行しようとしています。

管理フォルダー名:DirectGo
  PRJファイル名:   DirectGo.vbp,DirectGoP.vbp,DirectGoE.vbp
  buildされるEXE名: DirectGo.exe,DirectGoP.exe,DirectGoE.exe
  主なソースファイル:DirectGo.frm,DirectGoP.frm,DirectGoE.frm
      (3つのプロジェクトの共通ソースであるCommon.basもあり)

で、単体のプロジェクトDirectGo.vbpだけならVB2005から開けば自動移行できるのですが、
3プロジェクトをひとつのソリューションに統合する手順が分かりません。

[ツリー表示へ]
タイトルRe: VB6からの移行時にソリューション化
記事No5666
投稿日: 2007/06/20(Wed) 18:52
投稿者大吉末吉
> VB2005勉強中です。
> 勉強のために、VB6.0で作ったプログラムをVB2005に移行しようとしています。
> 単体のプロジェクトDirectGo.vbpだけならVB2005から開けば自動移行できるのですが、
> 3プロジェクトをひとつのソリューションに統合する手順が分かりません。

1つのプロジェクトを移行した後、そのソリューションに対して、
「ファイル」-「追加」-「既存のプロジェクト」で、2つ目のプロジェクトを指定すれば、
2つ目のプロジェクトに対しててもアップグレードされます。
同様に3つ目のプロジェクトも追加すれば良いのでは?

[ツリー表示へ]
タイトルRe^2: VB6からの移行時にソリューション化
記事No5670
投稿日: 2007/06/21(Thu) 11:27
投稿者ダンボ
大吉末吉さん、どうもありがとうございます。


> 「ファイル」-「追加」-「既存のプロジェクト」で、2つ目のプロジェクトを指定すれば、

とりあえず3つのプロジェクトが別々なフォルダーにアップグレードされ、1つのソリューション
として管理できるようにはなりました。

しかし、、共通なソースファイルCommon.Basも各々のフォルダーにCommon.vbとして別になって
しまいました。これはまずい。Common.vbはソリューションに唯一のファイルでないといけません。

どうするんでしょうね?VB6.0のように.vbpファイルを自前で編集すれば解決できるか
と思って.suoファイルを覗くとバイナリーだし。


#更に言えば管理フォルダーが3つに分かれるのも気持ち悪いし、それは甘受するとしても3つの
フォルダーのうち最初のフォルダーにだけソリューション管理ファイルができるのも何だか
対称性が悪いですね。

[ツリー表示へ]
タイトルRe^3: VB6からの移行時にソリューション化
記事No5671
投稿日: 2007/06/21(Thu) 12:06
投稿者花ちゃん
回答ではありませんが、個人的に使用されるならいいかも知れませんが、本格的に
移行されるなら、アップグレードによる変換は使用されない方がいいかなと思います。

VB2005 になってからはどうか知りませんが、私も.NET を始めた頃はコードが解らず
アップグレード を使って変換していたのですが、ある時変換したコードを他のプロジェクト
にコピーして使ったところ動かず苦労した事がありました。
なんのコードだったか忘れてしまいましたが、どうもアップグレードした時に内部で中間的な
コードを作って置換えてしまっているようでした。
それ以来アップグレードを使っていませんが、VB2005ではそのような問題起こっていませんか?
印刷関係や画像関係やうまく変換してくれないコードが結構あり、結局自分で全て変換した
方が確実で早かったように思いました。

[ツリー表示へ]
タイトルRe^4: VB6からの移行時にソリューション化
記事No5672
投稿日: 2007/06/21(Thu) 12:32
投稿者ダンボ
花ちゃんさん、どうもありがとうございます。

> 本格的に移行されるなら、アップグレードによる変換は使用されない方がいいかなと思います。

まっこと、そのように体感しています。

既に1本、単一プロジェクトのアプリを移行させてみて結局はすべてのコードは書き直したと
思います。回り道して時間も掛かっています。でもこれも勉強ですから。

・まず、コンパイルエラーを理解して修正する。
・VB6というキーワードでソース検索してすべてVB.Net文法に修正する。
・FlexGridはDataGridViewに変換する。
・IniファイルはMy.Settingに変更する。
・コントロール配列はコレクションへの移行を検討する。
・更にRight,Mid,LeftもToStringにする。
・On ErrorはTry Catchに変換する。

「あえて茨の道を進む」(かっこいい)
「スクラッチでは書けない」(本音)

[ツリー表示へ]
タイトルRe^5: VB6からの移行時にソリューション化
記事No5675
投稿日: 2007/06/21(Thu) 13:11
投稿者よねKEN
> ・更にRight,Mid,LeftもToStringにする。

ToStringではなくStringクラスのSubStringメソッドではないでしょうか?

[ツリー表示へ]
タイトルRe^6: VB6からの移行時にソリューション化
記事No5677
投稿日: 2007/06/21(Thu) 13:57
投稿者ダンボ
よねKEN さん、どうもありがとうございます。

>ToStringではなくStringクラスのSubStringメソッドではないでしょうか?

御意のとおりです。
お弁当食べながら書いていたからうろ覚えでした(と言い訳してみるが、ここのところの
書き込みで算術演算子と書いてみたり、本スレッドでも変換・変更と統一が取れていませんね)

[ツリー表示へ]
タイトルRe^3: VB6からの移行時にソリューション化
記事No5674
投稿日: 2007/06/21(Thu) 13:10
投稿者よねKEN
> どうするんでしょうね?VB6.0のように.vbpファイルを自前で編集すれば解決できるか
> と思って.suoファイルを覗くとバイナリーだし。

ソリューションファイルは.sln(VB6の.vbg相当)、プロジェクトファイルは.vbproj(VB6の.vbp相当)です。

[ツリー表示へ]
タイトル[解決]VB6からの移行時にソリューション化
記事No5676
投稿日: 2007/06/21(Thu) 13:45
投稿者ダンボ
よねKEN さん、どうも有り難うございました。

新規ソリューションの保存をしないと.slnファイルはできないようです。
VB2005終了時に保存場所を聞いてきたので3つのサブフォルダーの上位フォルダに保存しました。

下記手順でうまく行っている模様。
・.slnを編集しサブフォルダー名を修正(実際のフォルダ名も整合性とって修正)。
・Common.vbは一つを上位フォルダに移し他を捨てる。
・各サブフォルダー内の.vbprojを編集しCommon.vbの物理場所を変更する。
・どう表現するか少し迷ったが"..\Common.vb"で理解された模様。

ということは、3つのフォルダーを分けなくとも一つのフォルダにぶち込んでも
.slnと.vbprojをテキスト編集すればうまく行けそうですね。
これはvb6.0の素直な拡張という感じ。

[ツリー表示へ]