パソコン活用研究BASIC&VB&EXCEL達人の道

VB.Net Framework SDK

今は、Visual Studio express(2005,2008,2010)が無償配布されているので、.Net Framework SDKを
試してみる必要は、まったくありません。おじさんもほとんど触ってもいませんが、過去の遺産の
覚書として。

今でも.Net Framework SDKはMicro Softからダウンロードできるようになっています。
.Net Framework 1.1 SDK
.Net Framework 2.0 SDK

ただし、.Net Framework 1.1 SDKの場合は、事前にMDAC 2.6 以上、 .NET Framework Version 1.1
再頒布可能パッケージ、.NET Framework Version 1.1 日本語 Language Packなどをインストールして
おく必要があります。
使用環境やインストール手順については、マイクロソフトのページで確認してから進めたほうがいいです。
.Net Framework環境は、インストール、アンインストールの順番が違うと、不具合を発生発生させやすい
ようなので。


.Net Framework SDKで何ができんの?とういことですが、ほとんど使っていないのでよくわかりませんが、
コンソールプログラムだけでなく、WindowsのGUIプログラムも作成できるようです。Visual Studio express
が無料配布されているので、.Net Framework SDKを使う必要はないわけですが、.Net Framework SDK
にしかついていないデバッグツールがあるようで、そのためにだけインストールしている人もいるようです。


.Net Framework SDKをダウンロードしてくると、以下のものがインストールされるようです。

C#コンパイラ csc.exe
C/C++コンパイラ cl.exe
VBコンパイラ vbc.exe
Jscriptコンパイラ jsc.exe

その他
コマンドラインデバッガ cordbg.exe  中間言語CLR用のデバッガ
GUIデバッガ DbgCLR.exe
中間言語アセンブラ ilasm.exe
中間言語逆アセンブラ ildasm.exe
Windowsフォームクラスビューア wincv.exe
など。

上記のコンパイラを使えば、もちろん.net上でC#やC++やVBのプログラムが組めるわけです。もちろん
WindowsのGUIプログラムも可能です。


Visual Basicのプログラム

インストールしても、コンパイラのあるディレクトリにはパスが通っていないかもしれません。

コンパイル時の記述の仕方を見るためにとりあえず、コンパイラオプションを表示させてみます。
コンパイラオプションはとりあえず、以下の3つだけ覚えておけば、まずはOK。
/out:<file> 出力ファイル名を指定します。
/target:exe コンソール アプリケーションを作成します (既定値)。 (短い
形式 : /t)
/target:winexe Windows アプリケーションを作成します。

C:\vb>vbc
Microsoft(R) Visual Basic .NET Compiler version 7.00.9466
for Microsoft(R) .NET Framework version 1.00.3705.288
Copyright (C) Microsoft Corporation 1987-2001. All rights reserved.

Visual Basic .NET コンパイラ オプション

- 出力ファイル -
/out:<file> 出力ファイル名を指定します。
/target:exe コンソール アプリケーションを作成します (既定値)。 (短い
形式 : /t)
/target:winexe Windows アプリケーションを作成します。
/target:library ライブラリ アセンブリを作成します。
/target:module アセンブリに追加できるモジュールを作成します。

- 入力ファイル -
/addmodule:<file> 指定されたモジュールからメタデータを参照します。
/recurse:<wildcard> ワイルドカードの指定にしたがって、すべてのファイルを現在
のディレクトリおよびサブディレクトリに含めます。
/reference:<file_list> 指定されたアセンブリの参照メタデータです。 (短い形式 : /
r)

- リソース -
/linkresource:<resinfo> 指定されたファイルを外部アセンブリ リソースとしてリンク
します。リソース情報
:<file>[,<name>[,public|private]] (短い形式 : /linkres)
/resource:<resinfo> 指定されたファイルを、埋め込まれたアセンブリ リソースと
して追加します。リソース情報
:<file>[,<name>[,public|private]] (短い形式 : /res)
/win32icon:<file> 既定の Win32 リソースに対する Win32 アイコン ファイル (.
ico) を指定します。
/win32resource:<file> Win32 リソース ファイル (.res) を指定します。

- コード生成 -
/optimize[+|-] 最適化を有効にします。
/removeintchecks[+|-] 整数のチェックを削除します。既定値は Off です。
/debug[+|-] デバッグ情報を作成します。
/debug:full 完全なデバッグ情報を作成します (既定値)。
/debug:pdbonly PDB ファイルのみを作成します。

- エラーおよび警告 -
/nowarn 警告を表示しません。
/warnaserror[+|-] 警告をエラーとして扱います。

- 言語 -
/define:<symbol_list> 条件付きコンパイル シンボルをグローバルに宣言します。 sy
mbol_list:name=value,...
(短い形式 : /d)
/imports:<import_list> 参照されたメタデータ ファイルの名前空間に対して Imports
をグローバルに宣言します。
import_list:namespace,...
/optionexplicit[+|-] 変数の明示的な宣言が必要です。
/optionstrict[+|-] 厳密な言語セマンティクスを適用します。
/rootnamespace:<string> すべての型宣言に対してルート名前空間を指定します。
/optioncompare:binary バイナリ スタイルの文字列比較を指定します。これは既定値
に設定されています。
/optioncompare:text テキスト スタイルの文字列比較を指定します。

- その他 -
/help この使用方法に関するメッセージを表示します。 (短い形式 :
/?)
/nologo コンパイラの著作権見出しを表示しません。
/quiet 非表示出力モードです。
/verbose メッセージを表示します。

- 詳細 -
/baseaddress:<number> ライブラリまたはモジュールのベース アドレス (hex) です。

/bugreport:<file> 障害報告ファイルを作成します。
/delaysign[+|-] 厳密な名前のキーのパブリックな部分のみを使ってアセンブリ
を遅延署名します。
/keycontainer:<string> 厳密な名前のキー コンテナを指定します。
/keyfile:<file> 厳密な名前のキー ファイルを指定します。
/libpath:<path_list> メタデータ参照を検索するディレクトリの一覧です。セミコロ
ンで区切られます。
/main:<class> Sub Main を含むクラスまたはモジュールを指定します。Syste
m.Windows.Forms.Form ら継承するクラスを指定することもで
きます。 (短い形式 : /m)
/utf8output[+|-] コンパイラ出力を UTF-8 文字エンコードで作成します。
@<file> コマンドライン設定をテキスト ファイルから挿入します。


コンソールで"hello"を表示させるプログラム。

imports System
Public Class Hello
Shared Sub Main()
Console.WriteLine("Hello, World") ' Display message on computer screen.
End Sub
End Class


VB.netはVB4〜6までとかなりプログラムの記述の仕方が変更になっています。

imports System でSystemという名前空間を参照するよう宣言します。Systemは全てのアプリケーション
が必要とする基本的なクラスで、ここで使用するConsoleクラスも含まれます。
名前空間とかいう言葉には、なじみがない人もいるかもしれませんが、Systemというクラスを使用するよ、
という宣言と思って下さい。ここでは詳しくは説明しませんが、とりあえず必ず必要なおまじないと思って
おいてください。

Public Class Hello というのも、VB4〜6では見かけない記述かもしれません。
VB.NETでは、よりオブジェクト指向になり、コードはクラスの内部で記述することになりました。このため、Helloという名前の
クラスを作成しました。

Sub Mainに“Shared”がついていますが、これを指定したメソッドは、クラスのオブジェクトを生成しなくても呼び出すことが可能
になります。
Sub MainはクラスHelloのメソッドになっているという点も、いかにもオブジェクト志向型になった
という感じです。

Console.WriteLineはコンソールへの1行表示のメソッドです。
こまかく言うと、SystemクラスにあるConsoleクラスのWriteLineメソッドを呼び出していることになります。
最初にimports Systemという宣言をしましたが、実はこのおかげで、Systemは省略していきなり
Console.WriteLineと書くことができます。そうでなければ、System.Console.WriteLine とクラスから
メソッドまでフルで記述しなければなりません。
imports System の宣言をせず、いきなりConsole.WriteLineと書くとコンパイル時に以下のように
Consoleが宣言されていませんというエラーがでます。

C:\vbc\vbhello3.vb(5) : error BC30451: 名前 'Console' は宣言されていません。

Console.WriteLine("Hello, World") ' Display message on computer screen.

ここが、.Net Frameworkでのプログラミングの大きな特長になりますが、このSystemというクラスは
VB.netの専用ではありません。C#.netでもC++.netでもこのクラスを使用します。すなわち.Net Framework
共通で使われるライブラリになっています。
従ってC#でも、コンソールへの1行表示は以下のように記述します。(C#では最後に ; がある点は注意)
Console.WriteLine("Hello, World");
従来はVB用のクラスライブラリがあり、C++用のクラスライブラリがあり(Visual C++だとMFCとか)
それぞれ記述の仕方がばらばらでしたが、.Net Frameworkでは、VBもC#もC++もみな共通のクラス
を使用するので、いちいち覚えなおす必要はありません。VBプログラマがC#を書いたり、C+;を書いたり
するのがだいぶ楽ちんになります。

実行画面

C:\vb>vbc /target:exe /out:.\vbhello.exe vbhello.vb
Microsoft(R) Visual Basic .NET Compiler version 7.00.9466
for Microsoft(R) .NET Framework version 1.00.3705.288
Copyright (C) Microsoft Corporation 1987-2001. All rights reserved.

C:\vb>vbhello
Hello, World




Top page | Visual Basic&Excel活用研究目次