@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ASP.NET/C#でStrConvを

投稿者投稿内容
すけじい
会議室デビュー日: 2003/08/26
投稿数: 19
投稿日時: 2003-08-26 13:57
初投稿です。ASP.NET/C#とMobileToolKitで開発やってます。
Microsoft.VisualBasic名前空間のStrConvを使って、全角→半角変換したいのです。
(ケータイ相手なので、文字列をとにかく半角に……)

こちらの会議室でいくつかの意見を参考にさせてもらい、***.aspxファイルで、
<%@ Import Namespace="Microsoft.VisualBasic" %>
とやったあと、
Strings.StrConv("アイウエオ", VbStrConv.Narrow, 0x0411);
としました。ところが、変換モードの"VbStrConv.Narrow"でエラーが出て進みません。
「アセンブリを参照設定せよ」といわれるので、Web.Configをいじっても効果なしで、
お手上げ状態です。

どなたか、お助けを。。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-08-26 16:43
引用:

こちらの会議室でいくつかの意見を参考にさせてもらい、***.aspxファイルで、
<%@ Import Namespace="Microsoft.VisualBasic" %>
とやったあと、
Strings.StrConv("アイウエオ", VbStrConv.Narrow, 0x0411);
としました。ところが、変換モードの"VbStrConv.Narrow"でエラーが出て進みません。


Microsoft.VisualBasicだったかに参照設定しないといけないんではないですか?
<%@ Assembly Name="Microsoft.VisualBasic ほにゃらら" %>
とかそんな感じの記述ではないかと思います。
引用:

「アセンブリを参照設定せよ」といわれるので、Web.Configをいじっても効果なしで、
お手上げ状態です。


どういじって駄目だったのか分からないと、なんとも答えようがないような…
すけじい
会議室デビュー日: 2003/08/26
投稿数: 19
投稿日時: 2003-08-26 16:57
肝心のところを書いていませんでした。まことに申し訳ないです。
アプリケーションフォルダのWeb.Configで、

コード:
<compilation>
  <assemblies>
    <add assembly="Microsoft.VisualBasic" />
  </assemblies>
</compilation>



といった感じでアセンブリ参照を書きました。しかし、
『*****.aspx名前空間にVbStrConvが含まれていない』旨のエラーが出ます。
エラーメッセージを見ると、どうもローカルアセンブリキャッシュや、システム内の
テンポラリフォルダ内部をシラミツブシに探している様子。

単に、C:\WINDOWS\Assemblyの中を見てもらいたいだけなんだけど……

よろしくお願いします m(_ _)m。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-08-26 20:25
aspxに以下のように書けばいいんじゃないでしょうか。
コード:
<%@ Register Namespace="Microsoft.VisualBasic" TagPrefix="mw"
 Assembly="Microsoft.VisualBasic, Version=1.0.3705.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %>
<%@ import namespace="Microsoft.VisualBasic" %>


なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-08-26 23:38
引用:

catsさんの書き込み (2003-08-26 20:25) より:
aspxに以下のように書けばいいんじゃないでしょうか。
コード:
<%@ Register Namespace="Microsoft.VisualBasic" TagPrefix="mw"
 Assembly="Microsoft.VisualBasic, Version=1.0.3705.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %>
<%@ import namespace="Microsoft.VisualBasic" %>




Registerって、ユーザーコントロールなんかを使う場合にタグを簡潔に記述するための物じゃないでしょうか?
# 名前空間をプレフィックスで書けるようにするため?

今回は、コード中でメソッドや列挙体をアクセスする話なのでちょっと違うように思います。
# あんまり詳しくないので間違ってたらごめんなさい。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-08-26 23:43
引用:

すけじいさんの書き込み (2003-08-26 16:57) より:
アプリケーションフォルダのWeb.Configで、
コード:
<compilation>
  <assemblies>
    <add assembly="Microsoft.VisualBasic" />
  </assemblies>
</compilation>


といった感じでアセンブリ参照を書きました。


うーん、catsさんの書き込みでのアセンブリの指定のように、バージョン等を含めた完全な名前でアセンブリ名を記述してみたらどうでしょう?
あ、バージョンなんかはご自身のASP.NET環境のバージョンにあわせた方がいいかな(.Net Framework 1.0 ならいいですが)。
# ドキュメントを見た限りでは、やり方はあっているように思います。
Valhalla
ベテラン
会議室デビュー日: 2002/09/03
投稿数: 53
投稿日時: 2003-08-27 05:45
Microsoft.VisualBasic.dllを/binにコピー・・・・
はだめ?
すけじい
会議室デビュー日: 2003/08/26
投稿数: 19
投稿日時: 2003-08-27 12:12
なちゃさん、catsさん、valhallaさん、どうもありがとうございます。
<%@ Assembly Name=Microsoft.VisualBasic... %>でも、<%@ Register Assembly=Microsoft.VisualBasic... %>でも、どっちでもMicrosoft.VisualBasicアセンブリの読み込みにはいきます。ただし、

コード:
LOG: Publisher policy file is not found.
LOG: No redirect found in host configuration file (E:\WINNT\Microsoft.NET\Framework\v1.0.3705\aspnet.config).
LOG: Using machine configuration file from E:\WINNT\Microsoft.NET\Framework\v1.0.3705\config\machine.config.
LOG: Post-policy reference: Microsoft.VisualBasic, Version=1.0.3705.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
LOG: Attempting download of new URL
(以下省略)

てな具合で、Microsoft.VisualBasic.dllあるいはその依存ファイルが見つからない、とエラーが出ます。(E:がシステムフォルダ)

Web.Configに<assemblies>Microsoft.VisualBasic..</assemblies>を書いたときと同じエラーです。

で、結局(当座は)、valhallaさんのおっしゃるように、アプリケーションフォルダの/binにMicrosoft.VisualBasic.dllをコピーし、<%@ Assembly Name=Microsoft.VisualBasic.. %>で動かしました。良かったぁ!

また、継続して調べてみます。皆様、ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)