とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

My を使うかどうか考える。その2。- 自分探しの旅に出よう -

さて、例によって My なんですけどね、すんごい気になってることがあるんですよ。それは・・・

コードはどこにあるんでぃすか!?(My.Settings とか、My.Resource とかはいますけど、My.Computer っていなくないですか?)

まぁあれですよね、Visual Basic のことですから、きっとどっかに隠してあるんでしょう。それとも おかんの仕業かな?

さぁ、自分(My)探しの旅に出ますか♪※「これが言いたかっただけだろ!?」という質問にはお答えできません。

[検証1] Visual Studio 経由じゃないと My のコードは使えないのか?

んなこたぁ無いと思いますけど、とりあえず Visual Basic コンパイラ をコマンドラインから使用してコンパイルしたものに My は存在するかを調べます。まず、以下のコードを「Hello.vb」というファイルに保存します。

Imports System
Imports System.Windows.Forms

Namespace Torikobito.VisualBasicHello
    Public Class HelloProgram
        Public Shared Sub Main()
            MessageBox.Show(My.Application.Info.AssemblyName & ", world!")
        End Sub
    End Class
End Namespace

で、これをVisual Basic コンパイラ と Main プロシージャ。その1。の時と同じようにコマンドラインからコンパイルします。今回はこんな感じで↓。

vbc /target:winexe /out:Hello Hello.vb

あら不思議、Hello.exeができると思います。実行してみると、「Hello, World!」というメッセージが表示されますね。

で、今回も登場するのが、

MSDN:MSIL 逆アセンブラ (Ildasm.exe) (http://msdn2.microsoft.com/ja-jp/library/f7dy01k1(VS.80).aspx)

です。先ほどの Hello.exe を開いてみましょう。ツリーをつらつら眺めていると・・・

ちゃんと My あるね♪

というわけで、Visual Studio 経由じゃなくてもいけることは分かりました。

そして My はコンパイラが作ってくれていることもね♪

[検証2] My がコード上に存在しなくても生成されるのか?

My をどこにも使用していなくても勝手にできちゃうの?ってことで調べてみますね。さっきのコードを以下のようにMyを使わないで書きます。

Imports System
Imports System.Windows.Forms

Namespace Torikobito.VisualBasicHello
    Public Class HelloProgram
        Public Shared Sub Main()
            MessageBox.Show("Hello, world!")
        End Sub
    End Class
End Namespace

で、先ほどと同じようにコンパイルします。

vbc /target:winexe /out:HelloNoMy Hello.vb

HelloNoMy.exe を MSIL 逆アセンブラで、開いてみましょう。ツリーをつらつら眺めていると・・・

ちゃんと My あるね♪・・・あるのか。orz

というわけで、My がコード上に存在しなくても生成されるのね。


・・・。


・・・・・・。


・・・・・・・・・。

ちょっと待たんかい!!

そんなのいきなり言われても困ります!主人に相談してみないと・・・。

悪ふざけはさておき、なにか忘れてませんか?

コンパイラにはオプションがあるでよ!

そうです!忘れてました!オプションで制御できるかもしれない!と、いうわけでコレ↓

MSDN:Visual Basic コンパイラ オプション一覧 (アルファベット順) (http://msdn2.microsoft.com/ja-jp/library/w95cx9k1(VS.80).aspx)

上から下まで舐めるように見てみます。それっぽいものは無いですねぇ・・・。なのでリンクになっている部分まで読みまくってきました。結果だけ報告すると、

MSDN:/nostdlib(http://msdn2.microsoft.com/ja-jp/library/w95cx9k1(VS.80).aspx)の中に

次のコードは、標準ライブラリを参照しないで T2.vb をコンパイルします。_MYTYPE 条件付きコンパイル定数を文字列 "Empty" に設定して、My オブジェクトを削除する必要があります。
vbc /nostdlib /define:_MYTYPE=\"Empty\" T2.vb

ほ~、なんだかそれっぽいですよ!条件付コンパイルですか、よしよしやってみましょう。

vbc /target:winexe /define:_MYTYPE=\"Empty\" /out:HelloMyTypeEmpty Hello.vb

出来上がった HelloMyTypeEmpty.exe を MSIL 逆アセンブラで、開いてみましょう。ツリーをつらつら眺めていると・・・

My ないよ!

というわけで「/define:_MYTYPE=\"Empty\"」を指定すると My は生成されませんでした。

[結果] My は コンパイラ オプション によってその生成が制御されている。

ということですね。なんだか My を使用しない方法の説明になってしまった感じなので、最後にその手順だけ書いておきます。

「/define:_MYTYPE=\"Empty\"」をコマンドライン コンパイルから指定するか、Visual Studio 2005 では、

  1. ソリューション エクスプローラでプロジェクトを選択します。
  2. [プロジェクト] メニューの [プロパティ] をクリックします。
  3. [詳細コンパイルオプション]ボタンをクリックします。
  4. [カスタム定数]欄に「_MYTYPE="Empty"」と入力します。

以上です。ただし Visual Studio のプロジェクトが自動生成する 'My' のコードもコンパイルできなくなるので、使い勝手は悪いでしょうね。

投稿日時 : 2007年4月20日 16:16

Feedback

# re: My を使うかどうか考える。その2。- 自分探しの旅に出よう - 2007/04/20 16:31 とりこびと

My の海におぼれた・・・。

# re: My を使うかどうか考える。その2。- 自分探しの旅に出よう - 2007/04/20 16:36 ぽぴ王子

シャ○ンさんより先につっこんでみるテスト。

> さぁ、自分(My)探しの旅に出ますか♪

自分を指すんだったら、MyじゃなくてMeじゃね?
ドゥビドゥビ♪とかいうのが頭の中をループしているのは気のせいです。

# re: My を使うかどうか考える。その2。- 自分探しの旅に出よう - 2007/04/20 16:38 とりこびと

ぽぴ王子 さん、コメントありがとうございます。

>シャ○ンさんより先につっこんでみるテスト。

現実逃避中ですか?w

>自分を指すんだったら、MyじゃなくてMeじゃね?
>ドゥビドゥビ♪とかいうのが頭の中をループしているのは気のせいです。

すみません、正直ムリありました。orz

# re: My を使うかどうか考える。その2。- 自分探しの旅に出よう - 2007/04/20 16:44 じゃんぬねっと

My わかんねw
NCL の方がわかりやすい。

# re: My を使うかどうか考える。その2。- 自分探しの旅に出よう - 2007/04/20 17:01 おぎわら

My による開発
http://msdn2.microsoft.com/ja-jp/library/5btzf5yk(VS.80).aspx


Visual Basic アプリケーション モデルの概要
http://msdn2.microsoft.com/ja-jp/library/w3xx6ewx(VS.80).aspx

ここらへんがよいかとー

# re: My を使うかどうか考える。その2。- 自分探しの旅に出よう - 2007/04/21 1:48 アクア

なるほど…今回はコレでみんなを海に沈めるわけですね。

とりこびとさんのポケットにはいろんなネタが隠されているので、ドラえもんみたいです。^^;

…でトリこびと(違)の道具(ネタ)でMyの海におぼれた私達はすっかり 'どざえもん' な訳ですね。




…ごめんなさい。

# re: My を使うかどうか考える。その2。- 自分探しの旅に出よう - 2007/04/23 9:55 とりこびと

コメントありがとうございます。


>>じゃんぬねっとさん

>My わかんねw
>NCL の方がわかりやすい。

今のところ、私もです・・・orz
その仕組みを知ろうとすると、My も意外とおぼれますよ・・・。
そんなことしなくていいのが My なのでしょうけどwww



>>おぎわらさん

>Visual Basic アプリケーション モデルの概要

これ、見てきたんですけど、Visual Basic って
本 気 だ な
って気がしましたw
言語仕様は嫌いぢゃ無いんですが、隠し事が多いのは・・・。



>>アクアさん

>なるほど…今回はコレでみんなを海に沈めるわけですね。

とりあえず先に沈んでおきました。orz

>とりこびとさんのポケットにはいろんなネタが隠されているので、ドラえもんみたいです。^^;

えー、最近ネタ切れ感が否めないんですけど・・・(ToT)

…でトリこびと(違)の道具(ネタ)でMyの海におぼれた私達はすっかり 'どざえもん' な訳ですね。


誰がうま(ry

# My を使うかどうか考える。その3。 2007/04/23 13:46 とりこびと ぶろぐ。

My を使うかどうか考える。その3。

# My を使うかどうか考える。その4。 2007/04/25 22:04 とりこびと ぶろぐ。

My を使うかどうか考える。その4。

タイトル
名前
Url
コメント