DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プロジェクトのコピーを修正しても元のコードに影響しないようにしたい

環境/言語:[XP SP3 / VB2008Express]
分類:[.NET]

お世話様です。シマウマと申します。

XP SP3の環境で、VB.NET2008Expressを使用して
いるのですが、プロジェクトのバージョンごとにフォルダを変えたいと
考えました。

そこで、プロジェクトのフォルダをコピーして使用していたのですが、
あるとき、昔のフォルダを開いてい見ると、最新のフォルダにあるコードと
全く同じコードが見えることに気づきました。

こんな感じです。
プロジェクトAコード(フォルダA)
     ↓ コピー
プロジェクトBコード(フォルダB)
     ↓ 修正
プロジェクトB’コード(フォルダB)
プロジェクトB’コード(フォルダA)

ここで、コーディングしたプロジェクトのフォルダのコピーを、
元のフォルダに影響を及ぼすことなく修正するにはするには、
どうすればいいかという疑問がわいてきました。

過去ログにある「ソリューション名を変更するには? 18351」
の方法も試しましたが、だめでした。

そこでお伺いしたいことは次の2点です。
  1.コピー先でコードの修正があることを前提として、
        元のフォルダに影響を及ぼすことなく、
      プロジェクトのフォルダのコードをコピーするにはどのような手順を
        とればよいか。

  2.あるいは、プロジェクトのフォルダのコピーを作成した後で、
        コピーしたコードを修正しても
    もとのフォルダのコードに影響を及ぼさないようにするには、
        どのようにしたらよいか。

ご存知の方、ここのURLを見ろ程度でもかまいませんので、
ご指摘をお願いします。
こんばんわ。
いつもは逆にお世話になっている側なのですが、
気になりましたので書きこんでみます。

よくローカルでコピーすることはあるのですが、正直あまりおすすめできません。
また、これはVS2008 Standard上で試してはいますが、
Express上では試しておりません。ご了承ください。

…という前置きをしておいてですが、
おそらくは、プロジェクトデータの参照先が変更されていないためかと思います。

プロジェクトAのコードをコードaとします。
プロジェクトAをコピーし、その後コードaもコピーしました。
プロジェクトAのコピーをプロジェクトB、
コードaのコピーをコードbとします。

ただコピーしただけですと、プロジェクトBからも参照先はコードaとなります。
プロジェクトBからコードaの部分を一旦削除し、
再度追加でコードbの部分を選択してみて頂けないでしょうか。

あるいは、その時のコードをただ取っておきたいだけであれば、
コードのコピーのみ行い、コピー先のフォルダに日付か何かを付けておけばよろしいかと思います。

ですが、過去のソースコードを管理したいということでしたら、
Tortoise SVNなどの無料管理ツールを使うべきかと思います。

ご期待に添えない回答でしたら申し訳ありません。

以上です。
■No30881に返信(シマウマさんの記事)
> そこで、プロジェクトのフォルダをコピーして使用していたのですが、
> あるとき、昔のフォルダを開いてい見ると、最新のフォルダにあるコードと
> 全く同じコードが見えることに気づきました。

「リンクとしてファイルを追加」しているか「アセンブリを参照」しているならわかりますが、物理ファイルとしてコピーされている場合は上記のような現象は起きないハズです。
(ただし、AssemblyInfo.vb/cs は再生成してください)

プロジェクトの内部構成を教えて頂かないと何とも言えませんが。
プロジェクト ファイルは通常ではプロジェクト ルートからの相対パスとなっているハズですが、
ご自身で双方の vbproj/csproj ファイルを DIFF で見比べてみてはいかがでしょう。

それと、Visual Studio の IDE はプロジェクトと無関係のファイルを開くこともできるので、コピー元のファイルを開いて勘違いしている可能性は... さすがにないですね。
早速のご回答ありがとうございます。

皆さんのご意見を自分なりに要約して実行してみました。
結果、コピーを作る手順は次のようになりました。

1.元になるプロジェクト−プロジェクトAを作る(フォルダA)。
2.コピー先になる空のプロジェクト−プロジェクトBを作る(フォルダB)。
3.プロジェクトAのフォルダAから、プロジェクトBのフォルダBに*.vb, *.Designer.vb, *.resxをコピーする。
4.ソリューションエクスプローラーから、
    追加−既存の項目でそれぞれを追加する。
5.プロジェクトAと同じ参照設定をプロジェクトBに追加する。
6.完了

これでないと、元のフォルダのコードを参照してしまうので、修正した内容が
元のコードに反映されてしまいます。
結構、プロジェクトのコピーを作るのは面倒なんだなぁというのが感想です。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板