• 締切済み

既作成ソリューション・プロジェクトのコピー手順

以前VB2008で作成したソリューション・プロジェクト(プログラムAとします)をコピーして、 それをもとに追加機能を付加するため別ソリューション・別プロジェクトとしてコピーしました(「プログラムA_TEST」として元ファイルを単純にコピーしてDIR名をリネーム)。 ところが、プログラムA_TESTを修正し起動させたら、修正した箇所が反映させず、デバッグ(ブレイクポイントを付加)を行うと、ソースとモジュールが相違している旨のメッセージが表示され、「単一インスタンスのアプリケーションを作成する」にチェックをつけて実施すると、ブレイクポイントがプログラムA側のソースに当たります。本来このように元々あるソリューションをコピーする際の手順(なんとなく参照先を修正する必要がありそうに思えますが)があるのでしょうか? ご教示の程よろしくお願いいたします。 参考 プログラムAは4プロジェクト(APプロジェクト、共通機能プロジェクト、汎用機能プロジェクト、DBプロジェクト)で構成しています。 プログラムA_TESTも4プロジェクト(APプロジェクト、共通機能プロジェクト、汎用機能プロジェクト、DBプロジェクト)で構成されています。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

プロジェクトファイル(vbproj)やソリューションファイル(sln)が ファイルパスを覚えている為、ソースファイルはサブフォルダ以下 で管理し、 > DIR名をリネーム してはいけません。 ソースファイル名とかを変更する場合も、VBのソリューション エクスプローラ上で行ないます。(プロジェクトフォルダの管理は できないと思いますので、DIR名をリネームできない話に繋がります) どうしても変えたい場合は、最初にあげたプロジェクトの管理 ファイルをテキストエディタで直接編集する事になります。 もしくは、新規プロジェクトを新DIR名で作成し、ソース ファイル単位でコピーして、新規プロジェクトへ「既存項目の 追加」でコピーしたソースファイルを読み込んでいくとか。 > ブレイクポイントがプログラムA側のソースに当たります。 プログラムA側のソースをゴミ箱へ移動させるか、別メディア に移動させて参照できなくしても表示されますか? 前回ビルド時に作られたデバッグ情報などから表示されている だけでは? リビルドして、ビルドが成功しなかった時点で、それ以降の 動きは何の保証もありません。

moukodon
質問者

お礼

プロジェクトファイル(vbproj)やソリューションファイル(sln)を相対パス指定から絶対パス指定に変更し、対応できました。ありがとうございました。

関連するQ&A

  • 複数のプロジェクトがある場合のデバッグについて

    開発環境はVisualStudio2008 、C++にてSDK開発(非MFC)です。 同じような機能を使う通信プログラムを作っており、 クラスファイルを共通で使いたいので 1つのソリューションに2つのプロジェクトを作っています。 デバッグをしたいのですが、最初に作ったプロジェクトが必ずデバッグされてしまいます。 [F5]キーを押した時に、どのプロジェクトをデバッグするか指定する方法はどうすれば良いでしょうか?

  • (MFC)別々のプロジェクト内で作成したダイアログを表示させる方法

    VC++2005のMFCにてアプリケーションを作成しています。 一つのソリューション内に二つのプロジェクトA、Bが存在し、 プロジェクトAで発生したあるイベント(例:ボタン押下)にて、 プロジェクトBで作成したダイアログを表示させたいのですが、 実装したところ、下記コンパイルエラーが出てしまいます。 「error C2065: 'IDD_TEST2_DIALOG' : 定義されていない識別子です。」 現在のプロジェクトの設定としては、 ・プロジェクトAの依存先をプロジェクトBに設定 ・プロジェクトA選択状態で、  「プロジェクト」→「プロパティ」→「構成プロパティ」  →「C/C++全般」→「追加のインクルードディレクトリ」にて、プロジェクトBのパスを指定 と設定しているのですが、どこに問題があるのでしょうか? もし問題があるようでしたら、正しい設定方法、また実装方法について、 お手数おかけしますが、ご教授お願いできませんでしょうか? また下記にソースコード実装例を記載します。 【プロジェクトA(呼び出し側)】 #include "test2Dlg.h" //プロジェクトBのヘッダファイル ・・・ void Ctest1Dlg::OnBnClickedOk() { CDlgTest MyDlg; MyDlg.DoModal(); //プロジェクトBのダイアログ生成 } 【プロジェクトB(呼出され側)】 ・リソースビューにて、ダイアログ(IDD_TEST2_DIALOG)の「クラスの追加」で、  クラス名「CDlgTest」と指定

  • VC++でプロジェクト名などを変更する方法

    現在VC++で1つのプロジェクト"A"をかなりやりすすめています。 いま、まったく同じようなプロジェクトなんですか、ちょっと細かいところを変更した別のプロジェクト"B"を作りたいと考えています。 内容はかなり似たものなので、"A"をコピーして"B"としたいのですが、ファイル名や関数名、ソリューションエクスプローラなどを変更して、ソリューションのビルドをすると "B" fatal error LNK1104: コンパイラは、ファイル '.\Debug\"A".res' を開くことができません。 となっていまい、関連付けなどがどうやら"A"ファイルのままになってしまっているみたいなんです。 ちなみにリソースビューのプロジェクト名や.rcファイルの名前も変更する方法がわかりません。 それとも、新規作成で"B"というプロジェクトを作り、中身を移してきたほうが早いのでしょうか? 使い始めの初心者で申し訳ないです。 よろしくお願いいたします。

  • プログラムの開発方向を枝分かれさせるには?

    VB.NETでプログラミングしています。 あるプログラムにはある機能を持たせるようなプログラムを組んで、別のプログラムには他の機能を持たせるような場合、 プログラム内の注釈等でプログラムの機能を無効にしてしまう方法があると思いますが、 ある程度改良を重ねて大規模なプログラムになってきています。 その後、大幅な開発方向性の枝分かれがあるときに、プログラムのソリューション自体等を変えてしまって開発方向を別ルートにしてしまいたい場合、 ソリューション等をコピーして別プロジェクトにする方法はあるのでしょうか? 単純にプロジェクトの全ての内容をコピーすればよいものなのでしょうか?。邪道な方法に思えましたので、詳しい方に確認したいと考えました。 それとも、他の方法があるのでしょうか? 単純な方法かも知れませんが、 よく知りませんのでご教示ください。

  • 標準モジュールを共通で使うには?

    いつもお世話になります。VB2005です。 ソリューションには最低1個のプロジェクトが存在します。それに複数個の標準モジュールを追加してプログラム全体を構成しています。 ここで、独立した複数個のソリューション(プロジェクト)をつくり、それぞれから共通に利用できる標準モジュールを利用することがあります。この標準モジュールに何か変更が生じたときは、それらを利用しているプロジェクト内へファイルコピーして、後日の不一致を防止しています。 過去の古いVBでは、特定のホルダーに標準モジュールを置いておくことで共用ができていたと記憶しています。ですから、ある編集中プロジェクト内の標準モジュールに変更があっても、他のプロジェヘクトへ自然に反映されていました。 VB2005においても何かの設定で同様のことが可能でしょうか? よろしくお願いします。

  • EXCELVBA勝手にProjectが増える

    初めて質問させていただきます。 わかりにくかったらすみません。 ちょっと説明が長いですが、よろしくお願いします。 見よう見まねで1年前からEXCELでマクロを作ってきました。 自分の作業効率化が目的だったので、なんとなく動いていて納得していたのですが、今回台湾で動かしたところ エラーで動かないとのこと。  ■前提条件 <作成の環境>  WINDOWS 7 office2010 但し、今回対象のEXCELはoffice97-2003バージョン .xls形式で保存,実行 <エラーが発生する環境> OS ??? office2003 とのことです。  ■作業手順 1)AP-1で実行 -> ★エラー   以下の内容で修正  ・エラー画面を送付していただき、エラーメッセージは「不正確的字元」であるが、   ファイルが見つかりません的な内容と、赤字のエラー箇所から、マクロ名が漢字であるのが原因かと判断    -> マクロ名をはじめ、マクロ内のコメントを含むすべての文字を半角に修正(全角spaceがないことも確認済み)   ・元々10数個のマクロがありましたが、エラーが発生するマクロのみに修正    *このとき、元のEXCELの状態が残っていたら気持ち悪いので      97-2003で新規EXCELを作成し、必要なシートをコピーで挿入     新規マクロを作成し、元のソースコードをコピーで貼り付けてマクロを更新   ・ちなみに、別名で互換性チェックを行い、2003での互換エラーは当初37あったが、    わかる範囲で色を2003の標準カラーのみに展開して現在24個の「再現性の低下」が残っている状態です。  2)上記修正対応を2回行ってもらい、最終的に AP-3で現在実行確認中  現在のvbaの構成 (日本: 問題なく実行できる) --------------------------------------------------------------------------------- ---+--- VBAProject(AP-3)   +----+---Microsoft Excel Object +------sheet1 (data) <---- copyで挿入したシート +------sheet2 (grf)   <---- マクロを実行したら展開されるシート +------sheet3 (index) <---- copyで挿入したシート +------ThisWorkbook +---+---標準モジュール +----Module1 ------------------------------------------------------------------------------- ■現在発生しているエラー状況 1)エラー発生箇所    上記、作業手順1)★エラーと同じ箇所(AP-1のマクロ名が漢字の箇所)でエラーが発生し、処理が中断される    *実行時にはAP-3以外はすべて閉じてもらって単独で実行してもらっています。 2)エラー画面    相手側から送付してもらったエラー画面をみると、AP-1の背後に、AP-3のVBAの状態が表示されているが    AP-3のvbaの構成がこちらの構成と異なっています。 3)実行時のvbaの構成  ---+--- VBAProject(AP-3) ---+--- VBAProject(Book1) ---+--- VBAProject(AP-1) +----+---Microsoft Excel Object +------sheet1 (data) +------sheet2 (grf)   +------sheet3 (index)   +------ThisWorkbook +---+---標準モジュール +----Module1 +----Module2 +----Module3 +----Module4 .......   画面コピーで見るだけで現地の人にも聞けない状況で、はっきりとはわかりませんが、projectが勝手に増えています。 なぜ、閉じている過去実行したAPまで勝手にopenされて実行されるのでしょうか? AP-3自体は問題なく処理されているのでしょうか? EXCELのプロセスが正しくcloseしていない?ようですが、どうcloseしたらいいかもわかりません。 ご回答、よろしくお願いします。

  • Visual StudioのF5一発で、変更があるプロジェクトのみビルドしなおしで、実行までの自動化方法についての質問

    質問内容についてまず、結論を書きます。2つあります。 いづれか一方だけの回答でもわかるのであれば、お願いします。 Q1 同一ソリューションファイルに、複数のexeとdllが存在する時に、 「ソリューションのビルド」(リビルドではないです)を実行または、F5キーを押して、実行の行為を おこなった時に、ソースに変更があったプロジェクトのみビルドしなおされるようにする方法を教えてください。 Q2 また、dllの参照設定に指定するdllは2つあるうちのどちらを設定すればよいかを教えてください。そして、その理由もできれば、お願いします。 ↑「2つあるうちのどちらを」はおそらく意味不明だと思いますので、以下の説明のなかで言及します。 <<以後補足説明>> A.exe、B.dll、C.dll、D.dll、E.exe から構成されるアプリケーションを開発中です。 ソリューションファイルのパスは、 C:\hoge\A\A.sln です Aプロジェクトのプロジェクトファイルは C:\hoge\A\A.vbproj プロジェクトファイルについては、A~Eまで同様で、 Aフォルダと、プロジェクトファイル名が、各自のアルファベットにかわっただけです。 2箇所にdllが出力されます。 ア) C:\hoge\B\bin イ) C:\hoge\B\obj\Debug A~Eもアルファベットが異なる、exeとdllが異なる以外は同様です。 Q2の「2箇所」はこれのことです。 Q1ですが、Bプロジェクトのあるソースを修正してF5で実行しても、 B内での変更内容が実行に反映されなかった。 参照設定が原因か?と、(ア)→(イ)に変更しても、結果は同じ。 ソリューションのリビルドまたは、 Bプロジェクト単独でビルドした後にF5キーを押すと、反映されますが・・ そこで、Q1の質問ですが、F5キー一発で、ソリューションのなかで、変更があったソースのプロジェクトのみビルドして、 実行するまでを一発で、やる設定方法はないでしょうか?

  • C#でプロジェクトを超えたファイル参照

    こんにちは。 VisualStudio2008でC#でプログラムを書いています。 プロジェクトのC#のプロジェクトがあるフォルダとは別のフォルダにあるソースファイル(*.cs)をプロジェクトに既存項目の追加として追加すると、プロジェクトのフォルダにコピーされてしまいました。 コピーされてしまうとソースコードの共有管理ができなくなってしまうので、これをオリジナルのフォルダにあるファイルを指定させたいのですが、どのようにせっていすればよろしいのでしょうか? + Foo + Foo.csproj |    + Foo.sln + Common + Test.cs (←この位置のファイルを Foo 側に移動させないで追加したい)

  • 一つのソースユニットを複数のプロジェクトで共有したい

    BCB5を使っています。 複数のプログラムで共通な関数について、それらのプログラムで共有できるソースユニットを作ることが出来たら便利だと思っていますが、そんなことは可能でしょうか? 今三つのプログラム(A.exe、B.exe、C.exe)があるとします。 これらのプログラムの一部には、全く同じ処理があります。 それを関数Zf()とします。 で、Z.cppというユニットにこの関数を記述し、三つのプロジェクトで共有するのです。 この関数は仕様が完全に決まってはおらず、試行錯誤しながら決めて行くことになっています。 修正が多発するのですが、Z.cppを一つ修正すれば、再コンパイルだけで反映するので便利だ、という考えです。 私の知識では、一つのプロジェクトに新たなソースユニットを作る場合、そのユニットでは、呼ぶ側のヘッダーをincludeする必要があります。 今回の場合は、Z.cppは三つのプロジェクトに登録するわけですから、三つのヘッダーをincludeすることになってしまいます。 A.hとB.hを見ると同じ名前の変数や関数があり、これを同時にincludeするとマズイ事になりそうな気がします。 呼ぶ側のヘッダーをincludeせずに共有することは可能なのでしょうか? ちなみに関数Zf()では、グローバル変数は使っていませんし、他のユーザ関数を呼ぶこともありません。 シロートの質問ですがよろしくお願いします。

  • VisualStudio2003でDLLのデバックをブレークポイントやステップインで行う方法を具体的に教えて下さい。

    VisualStudio2003でDLLのデバックをブレークポイントやステップインで行う方法を具体的に教えて下さい。DLLのプロジェクトは、もうひとつのexeファイルと合わさって、1つのソリューションを構成しています。現状では、デバックを実行しようとすると、”デバック情報がありません”というダイアログボックスが開き、ブレークポイントの丸の上には、?が表示されます。