スポンサーリンク

ブラウザ上でVB.NETのコードを動かす (IE上で.NETアプリケーションをホストする方法の続き)

以下の記事では,IE上で,C#のDLLを動かす方法を述べた。

今から3分で,IE 上で .NET のDLLを動かそう (ブラウザ上で C# のコードを動かす方法)
http://language-and-engineering.hatenablog.jp/entry/20100705/p1


今回は,同じものをVB.NETでも作ってみる。



手短に。

(1)コードを用意

冒頭のURLで書いてあるC#のコードを,クリップボードにコピー。


以下のURLにアクセス。(C#のソースコードをVB.NETのソースコードに自動的に変換するフォーム

developer fusion / .net code converter Convert C# to VB.NET
http://www.developerfusion.com/tools/...

ソースコードをペースト。

変換を実行。



そして,手動で少々手直し。

以下のようなコードになる。


SampleDll.vb

Namespace SampleNameSpace

	' HTML上でカレンダーを表示するためのクラス。
	Public Class SampleDatePicker
		Inherits System.Windows.Forms.DateTimePicker
		' コンストラクタ
		Public Sub New()
			' 初回表示時のセットアップを行なう。

			' カレンダーの背景色
			Me.CalendarMonthBackground = System.Drawing.Color.Gainsboro
		End Sub


		' JavaScript用に,日付を文字列で返すメソッド(プロパティ)
		Public ReadOnly Property DateForJS() As String
			' getterのみ定義する
			Get
				' ToString()だと時刻も含まれる
				Return Value.ToShortDateString()
			End Get
		End Property
	End Class

End Namespace

(2)コンパイル

例の如く,.NET Frameworkのフォルダに移動。

コマンドプロンプトからVBのコンパイラを呼び出す。

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>
vbc /target:library /reference:"System.Windows.Forms.dll" /reference:"System.dll" /reference:"System.Drawing.dll" SampleDll.vb


Microsoft(R) Visual Basic .NET Compiler version 7.10.6001.4
for Microsoft(R) .NET Framework version 1.1.4322.2463
Copyright (C) Microsoft Corporation 1987-2002. All rights reserved.

SampleDll.dllが生成される。


[第4回] .NET Framework SDKを使ったVB.NETプログラム作成の流れ3 - コンパイル方法
http://www5b.biglobe.ne.jp/~yone-ken/...

  • vbc.exeを使ったCUIでのDLLのコンパイル方法


■VB.NETでSystem名前空間を参照する
http://www.atmarkit.co.jp/fdotnet/vb6...

(3)サーバから確認する

サーバの公開ディレクトリにDLLを配置して,HTMLも作る。

この辺は,冒頭で取り上げたC#の場合と同じ。なので,割愛する。




補足

.NETの情報源について。

  • C#だけでなく,VBも基本的なところは読めた方がよい。.NETの情報を探す時に役立つので。
  • 今回のようにVisual Studioを使わないでコーディングするケースはまれ。
  • 大抵,フォーム部品は,フォーム部品のエディタダイアログで編集する。フォーム部品の初期化を手動でコーディングするケースは少ない。
  • VBでDLLを自作するサンプルはネット上に少ない。


IE上での動作について。

  • DLL更新時に,わざわざIEを立ち上げなおすのが面倒。
  • エラーが発生した時の対処が面倒。JavaScriptからアクセスしてDLL内部の状態を表示するようなテストコードを,HTML側で準備しておくとよいかも。