カテゴリー: VB.NET

  • メモ: Visual Studio 2026で従来の.netアプリの開発はできるが・・・

    Visual Studio 2026でも、従来の.net framework 4.8のアプリ開発はできる。Visual Studio 2019からの乗り換えもできそう。

    ただし、開発しているアプリが32bitでなければの話。Visual Studio 2026だと64bitでコンパイルしてくるので、参照している外部DLLが32bitのものがあるとコンパイル(というか実行自体)ができなくて、エラーになる。開発段階だと普通に作業できてしまうので、実行段階になって、32bitのDLLの読み込みが行われて気がつく。古いアプリの改修を行うときにはハマるので注意。

    https://learn.microsoft.com/ja-jp/visualstudio/releases/2026/compatibility#-visual-studio-support-for-net-development

  • Accessで「.FindFirst」の処理が「コンパイルエラー」になる

    古いAccessのツールを、最新のAccessで使うとき、「.FindFirst」の処理が「コンパイルエラー メソッドまたはデータメンバーが見つかりません」になる。

    対応したときの方法は下記。

    1. Accessのツールを編集できるモードで開く。

    2. 上部メニューの「作成」を選択し、リボンUIから「Visual Basic」を開く。

    3. 「Microsoft Visual Basic for Applications」が開いたら、「ツール」の「参照設定」を選択する。

    4. 参照可能なライブラリで「Microsoft Office 16.0 Access database engine Object Library」を選択して、優先順を上位にする(あげられるところまで上げる)。

    5. 保存する。

    6. もう一度、テストする。

  • メモ:.NET8.0の対応Windows OS

    ちょっと検索で探しにくかったので、メモ。

    .NET8.0(.NET9.0も同じだった)が対応しているWindows OSは以下。

    • Windows server 2012以上(2012の場合は、Extended Security Updatesがインストールされていること。サポート無しならばランタイムは動く)
    • Windows server Core 2012以上(2012の場合は、Extended Security Updatesがインストールされていること。サポート無しならばランタイムは動く)
    • Windows10 バージョン1607以上
    • Windows11 バージョン22000以上

    参考:

    https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md

    https://github.com/dotnet/core/blob/main/release-notes/9.0/supported-os.md

  • VBScriptの寿命もあとわずか

    MicrosoftがWindows環境におけるVBScript(VBS)を非推奨にすると発表した。将来的には、VBScriptの実行環境が削除されるとのこと。

    「VBScript」は非推奨に、将来のWindowsリリースで削除
    https://forest.watch.impress.co.jp/docs/news/1537619.html

    しぶとく残ると思われていたIE11も廃止されたので、VBScriptも確実に削除されるだろう。いずれ出るであろうWindows 12は、削除されていてもおかしくはないかも。そう考えると、明確な言及はないけれど、2,3年くらいで無くなるという覚悟が必要そうだ。

  • ASP.NET(VB)でテキストボックスでEnterキーを押したときに何も動作させたくないのにImangeボタンのクリック処理が動作してしまう

    ASP.NET(VB)でウェブアプリを作るとき、テキストボックス上で、Enterキーを押したとき、ImangeボタンがEnterキーによって動作してしまう。Enterキーを押したときに、Submitやボタン動作を行わせたくないときの小技。

    あまり賢い小技ではないのだが、上部にダミーのなんのアクションも割り当てていないImageボタンを設置し、ボタンに割り当てるイメージ画像を1ピクセルの画像を割り当てる。これにより、テキストボックス上で、Enterキーを押しても、このダミーのイメージボタンがクリックされたようになる。これでユーザの邪魔にはならなくなる。

    <asp:ImageButton ID="ib_DummyForSubmit" runat="server" ImageUrl="~/img/space.gif" TabIndex="1" />

    もし、Enterキーを押したときに、実行させたいボタンがあるのであれば、Me.Form.DefaultButton に、ボタンのUniqueIDを指定する。

  • ASP.NET(VB)でEnterキーを押したときのデフォルトボタンを指定する

    Page_Loadで、Me.Form.DefaultButtonを指定することで、Enterキーを押したときに動作するデフォルトボタンを指定できる。指定は、動作させるコントロールのユニークIDを指定する。

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' Enterキーを押したときにイメージボタンがクリックされるのを防ぐ 
        Me.Form.DefaultButton = Me.bt_Submit.UniqueID
    End Sub
  • ASP.NETで「Web.HttpRequest.GetEntireRawContent()」のエラーが発生

    ASP.NETのアプリで、アプリケーションがクラッシュした。出力しているログをみても、下記のような程度しかエラーが出ていない。コーディングしたところとは無関係なエラーが出力されてきた。

    2023-02-XX 10:mm:ss,sss ERROR :  - Global_asax.Application_Error[xx] :    場所 System.Web.HttpRequest.GetEntireRawContent() 
       場所 System.Web.HttpRequest.GetMultipartContent() 
       場所 System.Web.HttpRequest.FillInFormCollection() 
       場所 System.Web.HttpRequest.EnsureForm() 
       場所 System.Web.HttpRequest.get_Form() 
       場所 System.Web.HttpRequest.get_HasForm() 
       場所 System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) 
       場所 System.Web.UI.Page.DeterminePostBackMode() 
       場所 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

    調べたところ、ファイルのアップロードで発生しており、「Web.HttpRequest.GetEntireRawContent()」のところで、POSTされてきた要求のサイズが大きすぎて、クラッシュしていることがわかった。

    調べてみると、IISの設定では、デフォルトでPOSTサイズは30MBまで。ASP.NETでは、デフォルトで4MBまで、だった。アップロードのファイルサイズが数メガあり、POSTサイズを超えたのが原因だった。

    対応としては、アップロードするファイルサイズを制限するか、ASP.NETの設定(web.config)を変えて、もっと大きいファイルサイズをアップロードできるようにするか、だ。

  • Web.configでASP.NETのPOSTサイズを設定する

    ASP.NETのアプリには、デフォルトの場合、POSTできるサイズが4MBに制限されている。POSTの制限なので、ファイルのアップロードをPOSTで行う場合も、このデフォルトの4MBの制限にかかる。(なお、IISのデフォルトは30MB)

    大きなファイルをアップロードするためには、Web.configに次の設定を行う。

    system.webセクションに、`<httpRuntime maxRequestLength=”サイズ指定” />` を追加し、サイズを指定する。単位はKbyteなので注意。

    system.webServerセクションに、` <requestLimits maxAllowedContentLength=”サイズ指定”/>` を追加し、サイズを指定する。単位はByteなので注意。

    今回指定しているのは、POSTなどでリクエストされるサイズなので、厳密のはアップロードされるファイルのサイズではない。他にも情報を送る場合には、MAXのファイルサイズ+送信データ量にする必要があるので注意。厳密に指定しなくてもよければ、大き目のサイズを指定しておくのがよい。

    web.configの設定例)

      <system.web> 
        <httpRuntime maxRequestLength="20480" /><!--20MB 単位はKbyte--> 
      </system.web> 
      <system.webServer> 
        <security> 
          <requestFiltering> 
            <requestLimits maxAllowedContentLength="20971520"/><!--20MB 単位はByte--> 
          </requestFiltering> 
        </security> 
      </system.webServer>

    参考:

    https://zukucode.com/2018/06/aspnet-upload-size.html

    ※参考にしたところは、微妙にWeb.configの設定ミスがあるので注意。

  • asp.netのコントロールのカラーをVBから変えようとしたらエラーに。

    コントロールのプロパティでは、カラー名や値で指定できるのに、VBで、そのまま書くとコンパイルエラーになる。VBやC#などのコードで、指定する場合は、「System.Drawing.Color」を使って、色を指定する必要がある。

    エラーになった記述

    xxxxxxxx.ForeColor = "#FF0000" 
    xxxxxxxx.ForeColor = "Red"

    正常にコンパイルもでき、動作する記述

    ' 色名で指定する場合 
    xxxxxxxx.ForeColor = System.Drawing.Color.FromName("Red") 
    xxxxxxxx.ForeColor = System.Drawing.Color.FromName("Black") 
    ' 数値で指定する場合 
    xxxxxxxx.ForeColor = System.Drawing.Color.FromArgb(0, 255, 0)

    参考 https://learn.microsoft.com/ja-jp/dotnet/api/system.drawing.color.fromargb?view=net-6.0

  • 「assenbly.csが見つからない」とエラーになる

    古いASP.NETのプロジェクト(言語はVB)をVisual Studio 2019で開いて、デバック実行したところ、「assenbly.csが見つからない」とエラーになる。

    これを回避するには、以下の設定を行う。

    1. 上部メニューから「デバッグ」を選択する
    2. 「オプション」を選択する
    3. (デバッグの全般で)「マイコードのみを有効にする」にチェックを入れて、OKで閉じる

    もう一度、デバック実行して、「assenbly.csが見つからない」が出なければ問題なし。