

VisualStudio2008で開発をしています。
共通定数を『Const.dll』として作成しています。
「Const.dll」には「Public Const TEST_PATH AS String = "C:\Temp";」のように、パスが記載されています。
利用側モジュール(ex. Test.exe)で、それを参照設定して利用しています。
仕様変更によりパスが変更になり、「Public Const TEST_PATH AS String = "C:\Temp\test";」のように「Const.dll」を修正しました。
基本的な勘違いかもしれませんが、「Const.dll」を修正したことにより、利用側モジュールも再度リビルドしなければいけないのでしょうか。
参照設定なので、リビルドしなくても、利用側モジュールが起動したときに、「Const.dll」を読み直しして、仕様変更後のパスで処理をおこなうだろうと思っていたいのですが、
リビルドしていない状態であれば、「Const.dll」をいくら変更しても、仕様変更前のパスで処理しようとしています。
参照設定先のモジュールを修正した場合、参照設定元のモジュールもリビルドしなおさなければならないのであれば、あまり参照設定の旨味がないような気がしています。
参照設定そのものに問題があるかもしれません。
情報が不十分であれば、その旨お願いいたします。
申し訳ありませんが、教えてください。
No.2
- 回答日時:
その程度の修正であれば、普通は利用側(参照している方)はビルドし直す必要無く、古いDLLに上書きコピーするだけでOKのはずです。
念のため確認ですが、まず、
・古いのを参照しているというのは、
参照する側のVisual Studio上での動きか?
それとも、参照する側をビルドして、VisualStudioを介さずに
動かしたときの話か?
この点がちょっとよく分かりません。開発環境か、稼働環境かということですね。稼働環境であれば、冒頭に書いたとおり「これまでのConst.dllに新しいConst.dllを上書きするだけ」です。
Visual Studio上での動きについてであれば、まず確認すべきなのは
・変更したConst.dllの完成品を、Const.dllを利用する(参照する)ソースが
参照している場所に正しく置いていますか?
ですね。参照先のパスはプロジェクトのプロパティに出ているはずなので、そのフォルダに「新しいConst.dllが置いてあるか」を確認するのが先決です。置いてあるのに参照がおかしい場合、ありそうなのは「ローカルコピーがFalseになっていて、参照しているフォルダと、デバッグモードなどで動かすときのフォルダに違うバージョンのConst.dllが入ってる」というようなケースですね。
基本、ローカルコピーはTrueのまま使うのをお勧めします。そうすれば、参照先とVisual Studio上での動作フォルダのDLLは同一になるので、普通は問題になりません。
なお、この手の問題を回避/予防/検出する良い方法として、DLLのバージョン番号を変更のたびに更新し、機能の変更とバージョン番号の対応をきちんと記録しながら「今使ってるDLLはどのバージョンか」がバージョン番号で判るようにするというものがあります。
一旦混乱が起きると、ちょっとした間違いでもあっという間に時間を消費するので、面倒かもしれませんがこうした管理をきちんとすることでトータルの作業時間は少なくなりやすいです。
ダラダラ書きましたが、参考になれば幸いです
この回答への補足
申し訳ございません、古いのを参照しているのは「参照する側はビルドせず、VisualStudioを介さずに動かした場合」です。
そして参照設定で、「ローカルコピー = True」にしています。
基本的には上書きするだけ、というイメージはあっているということですね。認識相違がなくて良かったです。
ただ、動作が想定どおりでないので、困ってはいますが。
さらに現状を詳しく書かせていただくと、
実行EXEを起動すると、別出しで処理を記載しているDLL((1))を呼び出します。
(1)の別だし処理DLLで、質問させていただいた「Const.dll」をImportし、(1)の処理を行っています。
新しい「Const.dll」の参照設定が正しいことを確認した上で、
DLL((1))を再ビルドすると、変更後パスで処理するようになりました。「Const.dll」を上書きしても、再ビルドしていないDLL((1))では、変更前パスで処理しようとしています。
他に何か考えられることはありませんでしょうか。
お手数をお掛けしますが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
-
4
IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ
その他(プログラミング・Web制作)
-
5
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
6
ASP.NETのDLL入れ替えについて
Microsoft ASP
-
7
VB.NETで参照設定
Visual Basic(VBA)
-
8
VB.NETでDLLを読み込ませる時にエラーがでる
Visual Basic(VBA)
-
9
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
10
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
11
VB.NETで、DLLを頂いたんですが・・
Visual Basic(VBA)
-
12
FriendとPublicの違い。。。
Visual Basic(VBA)
-
13
オブジェクト参照がオブジェクト インスタンスに設定されていません というエラーについて
Microsoft ASP
-
14
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
15
ビルドが実行できない 先へ進めない
Visual Basic(VBA)
-
16
[VB.net] DataGridViewの列ヘッダー複数行表示に伴う不具合?について
Visual Basic(VBA)
-
17
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
18
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
19
VBから参照できないCのDLLを使用する方法
Visual Basic(VBA)
-
20
ストアドプロシジャからストアドプロシジャを呼ぶには?
Oracle
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
Windows10のVBAでDirectX 8が使...
-
VB.NETでDLLを読み込ませる時に...
-
ManagementClassが見つからない。
-
VB.Net リビルド 意味不明なメ...
-
ビルドが実行できない 先へ進...
-
SOAP通信。恥を忍んで質問させ...
-
IT初心者です 仕事で、vb.netで...
-
VBでの実行時エラー’429’について
-
Excel-VBAでDSOFile.dll使える?
-
VB2008→VB2010でエラーが出てま...
-
ASP.NET Webアプリケーションが...
-
VB.NETで参照設定したDLLの修正...
-
Designer.vbは直接コードをいじ...
-
C# 他のアプリケーションを優先...
-
VB6(SP5)+OO4OでCreateObjectが...
-
Visual Studio 「AnyCpu」について
-
VBAで印刷の成功判定
-
PHPでPDFファイルの直接印刷
-
印刷ダイアログを表示させない方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
ManagementClassが見つからない。
-
VB.NETで参照設定したDLLの修正...
-
C#ソースをCSCファイルにてコン...
-
IT初心者です 仕事で、vb.netで...
-
VB.Net リビルド 意味不明なメ...
-
Using System.Drawing がうまく...
-
VB.NETでDLLを読み込ませる時に...
-
オブジェクト(dll)のレジストリ...
-
VB2008→VB2010でエラーが出てま...
-
ビルドが実行できない 先へ進...
-
VBAの参照設定について
-
MS Visual Studio 6.0のEnterpr...
-
DLLを作成してVBAから使用する...
-
VBAからDLLをCALLしたいのですが
-
msvcr120d.dllがないというエラー
-
VB2010で作成したdllからtlbが...
-
エラーメッセージ
-
【VB.NET】開いているフォルダ...
-
vc++ dll excel vba
おすすめ情報