tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル自作DLLを呼び出したときに行で止めたくない
記事No12004
投稿日: 2020/01/28(Tue) 20:34
投稿者でふぁいあんと
お世話になります。
タイトルが混乱してすみません
根本的にvb.netの使い方がわかっていないのでご迷惑をおかけします。
vb6では実現できていたことです

vb.netで、とあるプログラムを作成しています。
プログラム中には、処理の状況をログに書き出すため
ログファイルのチェック、行の書き込みといった
ごくごく簡単な処理です。これを専用プロシージャーで処理していたのですが
他のプログラムでも使うので、dll化してみました。

 作成したdll
  c:\vb\sub\log\bin\debug\log.dll
 これを c:\vb\log.dllとしてコピー
  メインのプログラムは、c:\vb\sub\main\bin\debug\main.exe
  ソースの呼び出しは c:\vb\sub\main\main.sin
  参照は、c:\vb\sub\log.dll
という状態です。
main.sinのソースで、
Dim LL As New log.Class1
Ret = LL.LogWrite(ログファイル名, 結果文字)

という処理にしたころ、動作はするのですが、
行デバッグ時に、Log.Class1のソースが立ち上がってしまい、
LOG.Class1のソースも追いかけてしまいます。
LOG.Class1は、確定なので、ソースを表示したくない=F11ですぐ結果を出す
にしたいのですが、方法はありますか、

脳みそがvb6なので根本的にわかっていないことが多くてすみません

[ツリー表示へ]
タイトルRe: 自作DLLを呼び出したときに行で止めたくない
記事No12006
投稿日: 2020/01/29(Wed) 10:29
投稿者Hongliang
// デバッガで1行ずつ実行していくのは、(少なくともVisual Studio界隈では)ステップ実行と呼ぶことが多いです。

Class1のLogWriteメソッドに、以下のようにDebuggerStepThrough属性をつければステップインしなくなります。

<System.Diagnostics.DebuggerStepThrough> _
Public Function LogWrite(...) AS ...

Class1のすべてのメンバでステップインさせたくないのであれば、クラス自体に属性をつけることもできます。
この場合個々のメソッド等に属性をつける必要はありません。

<System.Diagnostics.DebuggerStepThrough> _
Public Class Class1
...

// 個人的には普段はF10:ステップオーバーでステップ実行し、必要な時だけF11:ステップインするようにしているので、
// 特に気にしたこともないですが。

[ツリー表示へ]
タイトルRe^2: 自作DLLを呼び出したときに行で止めたくない
記事No12008
投稿日: 2020/01/29(Wed) 18:10
投稿者でふぁいあんと
おお、できました。望んでいる通りの挙動です。
現在、vb6のプログラムと併用中なので、ファンクションキー使いたくないのです。。。

もしよろしければもう一つお願いしたいのですが、
vb6の場合は、dllでもexeでも作成したら、
デフォルトでプロジェクトと同じ位置に作成されますよね
(vbpとexeが同じ位置)

.netの場合は、
.sin->プロジェクトファイル?に対して
exe,dll等が、bin\debug\のフォルダに作成します。
exeの場合はよいのですが、dllがここにできると非常に不便なので
どこからでも参照しやすい c:\vb\subにコピーして
そこを参照しているのですが、これで正しいのでしょうか。

vb6の場合は、c:\vb\subの配下に、\pgm1,\pgm2とプロジェクトを多数置いています。

実際、ご案内頂いた方法で、
c:\vb\sub\log\log.sinから起動されるソースに
<System.Diagnostics.DebuggerStepThrough> _ を加えてビルト
ここで、log.dllは、\bin\debug 配下に作成されて、更新日付は最新

呼び出しもとの、プログラムは、c:\vb\sub の log.dllを参照しているのに
うまく動いてしましました。

[ツリー表示へ]
タイトルRe^3: 自作DLLを呼び出したときに行で止めたくない
記事No12009
投稿日: 2020/01/30(Thu) 15:29
投稿者shu
>
> .netの場合は、
> .sin->プロジェクトファイル?に対して
> exe,dll等が、bin\debug\のフォルダに作成します。
> exeの場合はよいのですが、dllがここにできると非常に不便なので
> どこからでも参照しやすい c:\vb\subにコピーして
> そこを参照しているのですが、これで正しいのでしょうか。
>
次のどちらかで行えばexeと同じフォルダにコピーされます。
(1) dllのプロジェクトを同じソリューションに含め、参照をdllではなくプロジェクトとし
 ローカルにコピーとする。
(2) dllを参照時にローカルにコピーにする。

[ツリー表示へ]