Visual Studio 2026でも、従来の.net framework 4.8のアプリ開発はできる。Visual Studio 2019からの乗り換えもできそう。
ただし、開発しているアプリが32bitでなければの話。Visual Studio 2026だと64bitでコンパイルしてくるので、参照している外部DLLが32bitのものがあるとコンパイル(というか実行自体)ができなくて、エラーになる。開発段階だと普通に作業できてしまうので、実行段階になって、32bitのDLLの読み込みが行われて気がつく。古いアプリの改修を行うときにはハマるので注意。
問題は、アプリケーションサーバであるIISの設定だった。Windows Server 2019のIIS10は、デフォルトでは64ビットのアプリケーションサーバとして動作する。そのため、32ビットのDLLが混じったアプリケーションを実行するためには、IISの設定で、32ビットのアプリケーションを動作するようにしないといけなかった。
Visual Studio 2008のソリューションを、Visual Studio 2019の形式に変換した。.NET Frameworkも3.5から4.8に変更した。Visual Studio 2019でデバック実行したところ、ログインユーザの値が「Request.ServerVariables(“LOGON_USER”)」でとれなくなった。
言語のバージョンか、.NET Frameworkのバージョン違いか、調べたが、ちゃんと残っていた。
変わっていたのは、Visual Studio 2019上での開発サーバー(IIS)の設定値だった。プロジェクトのプロパティを開いたところ、開発サーバーの設定があり、そこの設定では、「Windows認証」が無効で、「匿名認証」が有効になっていた。これだと、LOGONしたことになっていないので、「LOGON_USER」の値は、空になる。