.NET TIPS [ASP.NET]ASP.NETでVB.NET固有の関数をC#から利用するには?山田 祥寛2005/05/27 |
|
|
Visual Basic .NET(以下、VB.NET)の特長の1つとして、初学者でも直感的に分かりやすいさまざまな関数群が豊富に取りそろえられているという点が挙げられる。しかし、「TIPS:VB.NET固有の関数をC#で使用するには?」でも紹介しているように、VB.NETの関数は別にVB.NETだけでしか利用できないというものではない。関数の実体は、あくまで.NET Framework内で定義されているクラス・ライブラリであるので、実はC#などのほかの言語からでも自由に利用できるものなのだ。
本稿では、ASP.NET+C#でVB.NET関数を利用する場合の、いくつかの設定方法について紹介することにしよう。なお、VB.NET関数の名前空間/モジュール/アセンブリに関する詳細は前掲のTIPSが詳しいので、併せて参照していただきたい。
1.ページ単位にVB.NET関数を有効化する
ページ単位に、VB.NET関数(アセンブリ)を有効化するには、@Assemblyディレクティブを宣言すればよい。これによって、ASP.NETの動的コンパイル時に使用されるアセンブリを追加することができる。
|
|
C#からVB.NET関数を利用するWebフォームのサンプル・プログラム(vbnet_func.aspx) |
Environ関数(InteractionクラスのEnvironメソッド)は、パラメータに指定された環境変数の値を表示するためのVB.NET関数だ。上記のサンプルを実行し、以下のような結果が確認できれば成功だ(ただし、サーバ環境によって表示される値は異なる)。
サンプル・プログラム(vbnet_func.aspx)の実行結果 |
Environ関数(InteractionクラスのEnvironメソッド)のパラメータに指定された環境変数の値が表示されている。ただし、サーバ環境によって表示される値は異なる。 |
@Assemblyディレクティブの構文は、以下のとおりだ。
|
|
@Assemblyディレクティブの構文 |
アセンブリ名は、
「アセンブリ名, Version=バージョン, Culture=カルチャ, PublicKeyToken=公開キートークン」
の完全修飾名の形式で記述すること。グローバル・アセンブリのバージョンやカルチャ、公開キートークンは、エクスプローラのツリーから「<Windowsフォルダ>\assembly」フォルダを開いて、該当アセンブリのプロパティ・シートを参照することで確認できる。
アセンブリ・ファイルのプロパティ・シート |
グローバル・アセンブリのバージョンやカルチャ、公開キートークンは、エクスプローラのツリーから「<Windowsフォルダ>\assembly」フォルダを開いて、該当アセンブリのプロパティ・シートを参照することで確認できる。なお、この「assembly」フォルダの表示には、エクスプローラのシェル拡張が利用されているので、必ずエクスプローラのツリー表示から参照しなければならない。エクスプローラでの具体的な参照例は、「インサイド .NET Framework [改訂版] 第3回 アセンブリのロード」を見てほしい。 |
なお、@AssemblyディレクティブのSrc属性ではパスを仮想パスで指定する必要がある。絶対パスでの指定はできないので、注意していただきたい。
@Assemblyディレクティブでアセンブリを追加したら、あとは@ImportディレクティブでMicrosoft.VisualBasic名前空間をインポートすることで、「モジュール名.関数名」の形式でVB.NET関数を呼び出すことができる。ちなみに、Microsoft.VisualBasic名前空間に含まれるVB.NET関数と名前空間の対応については、「Visual Basic ランタイム ライブラリのメンバ」が詳しい。詳細は、こちらを参照していただきたい。
2.アプリケーション単位にVB.NET関数を有効化する
1で紹介した手段は、最も手軽だが、アプリケーションの複数ページでVB.NET関数を利用するならば、ページごとにいちいち@Assemblyディレクティブを記述するのは好ましくない。一般的には、web.configでアプリケーション単位にアセンブリを有効にすることをお勧めする。web.configでアセンブリを有効にするには、以下のように記述すればよい。
|
|
アプリケーション単位にVB.NETの関数を有効にするための設定(web.config) |
<assemblies>要素配下における<add>要素のassembly属性に、Microsoft.VisualBasicアセンブリへの参照の追加を記述する。assembly属性の記法は、先の@AssemblyディレクティブのName属性のそれと同様だ。<add>要素は、有効化したいアセンブリの数だけ併記できる。
先ほどのWebフォーム(vbnet_func.aspx)から@Assemblyディレクティブを取り除き、同様の結果が得られれば成功だ。
3.マシン単位でVB.NET関数を有効化する
web.configの代わりに、machine.configに以下の記述を追加することで、マシン配下の全アプリケーションに対して一律にアセンブリを追加することも可能だ。
ただし、アプリケーションそのものをほかの環境に移行した場合に、移行先のマシンでもmachine.configを設定しなければならない、machine.configの編集はマシン上のほかのアプリケーションに影響を及ぼす可能性がある、などの点を勘案すると、あまりお勧めできる方法ではない。あくまで以下に示すのは、参考程度の意味合いであると考えていただきたい。
|
|
全アプリケーションに対してVB.NETの関数を有効にするための設定(machine.config) |
なお、machine.configは「<Windowsフォルダ>\Microsoft.NET\Framework\<バージョン番号>\CONFIG」フォルダに含まれている。
カテゴリ:Webフォーム 処理対象:VB.NET関数 カテゴリ:C# 処理対象:VB.NET関数 関連TIPS:VB.NET固有の関数をC#で使用するには? |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|