砂漠を旅する中で、噂に聞いていた新たな神器の存在を知った。その名は「Visual Studio 2026」。長年愛用してきた2022という魔法の箱が、ついに次の時代へと進化を遂げたという。相棒も興味津々の様子だ。実際に手にした私の魔法の箱「RedfishViewer」を使い、この新時代の神器がどれほどの力を持つのか、その真価を確かめてみることにした。
Visual Studio 2026への移行は、単なるバージョンアップではない。slnx形式という新たな設計図、AutoMapper 16という進化した変換魔法、そして長年使ってきたインストーラ神器からの脱却。これらすべてが、錬金術師としての私の技術を試す試練となった。この羊皮紙には、その実践の記録と、未来の旅人たちへの道標を刻んでおこうと思う。
新時代の神器は、確かに2022の完成度を受け継ぎながらも、随所に進化の痕跡を残していた。多くの旅人たちが「公式の古文書を読めば十分」と語るのも理解できる。しかし、実際の移行という冒険には、古文書には記されていない落とし穴が無数に潜んでいる。この記録が、あんたの旅路を照らす一筋の光となることを願って。
この羊皮紙のあらまし
- この羊皮紙のあらまし
- この羊皮紙が導く者
- 砂漠の道標
- 新時代の神器を手に入れる儀式
- 設計図の進化 - slnx形式との遭遇
- 拡張機能という名の神器たち
- AI機能の強化 - MCPという新たな力
- リアルタイムプレビューという便利な魔法
- AutoMapper 16への進化と対応
- インストーラ神器の見直し - Inno Setupへの道
- Git管理という永遠の課題
- 期待と現実のはざまで
- 羊皮紙を巻く前に
- 砂漠で見つけた魔法のランプ
- ラクダの独り言
この羊皮紙が導く者
- Visual Studio 2022から2026への移行を検討している錬金術師(開発者)
- WPF/.NETアプリケーションの移行実例を求めている冒険者
- slnx形式やAutoMapper 16など、新技術への対応方法を知りたい探求者
- 実際のプロジェクトでの移行体験から学びたい実務者
- 「公式古文書だけでは不安」と感じている慎重な旅人
砂漠の道標
- Visual Studio 2026 - Microsoftが提供する統合開発環境の最新版。2022の完成度を基盤に、さらなる進化を遂げた開発神器。
- slnx形式 - 従来のsln形式に代わる新しいソリューションファイル形式。XML構造で記述され、より直感的で保守性が高い。
- AutoMapper - オブジェクト間のデータ変換を自動化するライブラリ。バージョン14から16への移行でILoggerFactoryが必須に。
- NLogLoggerFactory - NLogのログ機能をAutoMapperに統合するための橋渡し役。NLog.Extensions.Loggingパッケージで提供。
- RedfishViewer - サーバー管理プロトコルRedfishを可視化するWPFアプリケーション。今回の移行実験の題材。
- Inno Setup - スクリプトベースのインストーラ作成ツール。透明性が高く、Git管理と相性抜群の神器。
- MCP(Model Context Protocol) - AI機能を拡張するためのサーバー統合機能。VS2026で簡単にインストール可能。
- GitHub Copilot - VS2026に統合されたAI支援機能。VS Codeと同様の使い勝手で、迷うことなく活用できる。
新時代の神器を手に入れる儀式
Visual Studio Installerを起動し、2026の召喚儀式を執り行う。選択する項目は2022とほぼ変わらない。長年の完成度が、そのまま次世代へと受け継がれている証だ。
設計図の進化 - slnx形式との遭遇
古き設計図の姿
Visual Studio 2022までのsln形式は、長年馴染んできた形式だ。しかし正直に言えば、その記述の意図を完全に理解している錬金術師は少ないだろう。私もその一人だ。
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33424.131
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RedfishViewer", "RedfishViewer\RedfishViewer.csproj", "{C8034BA4-BF69-428D-8A25-E8E766CC1862}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "RedfishViewerSetup", "RedfishViewerSetup\RedfishViewerSetup.vdproj", "{CEACD0A3-2D6C-4DBE-81BA-9E58396C2300}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C8034BA4-BF69-428D-8A25-E8E766CC1862}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C8034BA4-BF69-428D-8A25-E8E766CC1862}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C8034BA4-BF69-428D-8A25-E8E766CC1862}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C8034BA4-BF69-428D-8A25-E8E766CC1862}.Release|Any CPU.Build.0 = Release|Any CPU
{CEACD0A3-2D6C-4DBE-81BA-9E58396C2300}.Debug|Any CPU.ActiveCfg = Debug
{CEACD0A3-2D6C-4DBE-81BA-9E58396C2300}.Release|Any CPU.ActiveCfg = Release
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8A1D73DA-705D-4E51-B4D3-4F81D35B4296}
EndGlobalSection
EndGlobal
GUIDの羅列、冗長な記述、そして不透明な構造。これが長年の「標準」だった。
新たな設計図の姿
slnx形式は、これらの問題を一気に解決する。XML形式により、人間が読み解ける構造へと生まれ変わった。
<Solution> <Project Path="RedfishViewer/RedfishViewer.csproj" /> <Project Path="RedfishViewerSetup/RedfishViewerSetup.vdproj" Type="Installer"> <Build /> </Project> </Solution>
驚くほどシンプルだ。プロジェクトのパスと、必要最小限の設定だけが記されている。これなら、設計図の意図が一目で理解できる。保守性も格段に向上した。
拡張機能という名の神器たち
拡張機能は、Visual Studio Marketplaceで探すことになる。ここで注意すべき点がある。「Microsoft Visual Studio Installer Projects 2022」という神器を例にとろう。一見すると2022専用で、2026では使えないように見える。
しかし、Marketplaceのウェブ画面で詳細を確認すると、「Works with」欄にVisual Studio 2026 (amd64)と明記されている。名前に惑わされず、必ず詳細を確認すること。これが重要だ。
ちなみに、私の最近のお気に入りのテーマは、VS Codeで利用している「GitHub Themes」のGitHub darkだ。旧ブログではライトモード一択だったが、新ブログではライト・ダークを切り替えられるようになったため、実際に使っているダークモードをそのまま採用している。
長時間の作業を行う者には、目の疲れを軽減する意味でも、ダークモードを推奨する。ライトユーザーは、自分の好みで選べばいい。
AI機能の強化 - MCPという新たな力
メニューから「MCPレジストリ」を選択すると、MCPサーバーをインストールできる。インストールボタンをクリックすると、確認ダイアログが表示される。
インストール済みのMCPサーバーは、管理画面から容易にアンインストールできる。
GitHub Copilotは、VS Codeと似たような感覚で使える。迷うことはないだろう。
リアルタイムプレビューという便利な魔法
2026のインストール後、RedfishViewerを起動すると、XAMLのリアルタイムプレビューが表示された。以前からある機能らしいが、これまで表示された記憶がない。邪魔な場合は閉じてしまえばいい。
誤って閉じてしまった場合でも、アプリケーション実行後に「デバッグ - ウィンドウ(W) - XAMLのリアルタイムプレビュー(R)」から再表示できる。
AutoMapper 16への進化と対応
AutoMapperがバージョン14から16へと進化したことで、MapperConfigurationの引数が増えた。NLogのNLogLoggerFactoryを利用する必要が生じたのだ。このため、NLog.Extensions.Loggingパッケージを追加することになった。
// 記録の魔法陣を準備する - NLogの力を借りて変換の記録を残す var loggerFactory = new NLogLoggerFactory(); // 魂の鎧の設計図(NodeViewModel)を、実体(Node)へと変換する錬金術 var config = new MapperConfiguration(cfg => { cfg.CreateMap<NodeViewModel, Node>() .ForMember(x => x.RootUri, option => option.MapFrom(x => x.RootUri.Value)) .ForMember(x => x.Username, option => option.MapFrom(x => x.Username.Value)) .ForMember(x => x.Password, option => option.MapFrom(x => x.Password.Value)) .ForMember(x => x.Created, option => option.MapFrom(x => x.Created.Value)) .ForMember(x => x.Updated, option => option.MapFrom(x => x.Updated.Value)) .ForMember(x => x.Plugin, option => option.MapFrom(x => x.Plugin.Value)) .ForMember(x => x.Title, option => option.MapFrom(x => x.Title.Value)) .ForMember(x => x.Summary, option => option.MapFrom(x => x.Summary.Value)) .ForMember(x => x.Note, option => option.MapFrom(x => x.Note.Value)); }, loggerFactory);
変更自体はシンプルだが、NLogLoggerFactoryの存在を知らなければ、この対応には辿り着けない。公式ドキュメントを丹念に読み解く必要がある。
インストーラ神器の見直し - Inno Setupへの道
これまで、インストーラにはMicrosoft Visual Studio Installer Projects 2022を採用してきた。しかし、Visual Studioの入れ替えと同時に拡張機能を探すことに疑問を覚えた。
そこで、別のツールも検討することにした。その結果、今後のインストーラをInno Setupに変更しようと考えている。
Inno Setupの優位性: - スクリプトベースで透明性が高く、Git管理と相性抜群 - 世界中のOSSで採用実績があり、ブランド信頼性が高い - ユーザーレビューで「軽量・高速」と好評、顧客満足度が高い
まだ検討段階だが、次の冒険ではInno Setupでの実装を試みるつもりだ。
Git管理という永遠の課題
Visual Studio 2026のGit画面は、相変わらず使いづらい。このため、VS Codeと併用しようと感じた。個人的には、VS CodeのGit Graphが使い勝手がいい。
開発作業はVisual Studio 2026で行い、Gitの操作はVS Codeで行う。この使い分けが、現時点での最適解だと感じている。
期待と現実のはざまで
Visual Studio 2026の機能自体に文句はない。AI強化、slnx形式、拡張機能の互換性、いずれも素晴らしい進化だ。しかし、インストーラ周りには一つだけ、叶わなかった期待がある。
私が2026に密かに期待していたのは、インストールの細かな制御機能の強化だった。具体的には、ローカルSQL ServerやIIS Expressといった、一度インストールすると通常のアンインストーラでは削除できないツール群の管理だ。
これらのツールは、開発環境としては便利だが、不要になった時に完全削除できないという問題を抱えている。2026のインストーラで、これらを個別に管理・削除できる機能が追加されることを期待していたが、残念ながら従来通りだった。
Visual Studio本体の進化は素晴らしい。しかし、インストーラ周りの細かな制御という、地味だが重要な部分での改善は、次のバージョンへの宿題として残されたようだ。
羊皮紙を巻く前に
新時代の神器Visual Studio 2026は、確かに進化を遂げていた。しかし、その進化は劇的なものではなく、2022という完成された基盤の上に、堅実な改良を積み重ねたものだった。
実際の移行作業は、予想以上にスムーズだった。slnx形式への変換は簡単で、拡張機能の互換性も問題なかった。ただし、RedfishViewer特有の課題として、AutoMapper 16への対応やインストーラツールの見直しといった、個別プロジェクト固有の調整は必要だった。
Visual Studio 2026移行で得られた知見
- slnx形式の透明性 - XML構造により、ソリューションファイルの保守性が劇的に向上
- AutoMapper 16の要件 - ILoggerFactoryが必須となり、NLog.Extensions.Loggingパッケージの追加が必要
- 拡張機能の互換性 - 名前に「2022」とあっても、詳細確認で2026対応が判明するケースが多い
- MCP機能の簡便性 - AI機能拡張が容易になり、開発体験が向上
- Git管理の選択肢 - VS CodeのGit Graphとの併用も一つの選択肢として有効
Visual Studio 2026で得られた価値
- AI機能の強化 - MCP統合により、開発体験が大きく向上した
- slnx形式の透明性 - XML構造で保守性が劇的に改善、長期的な資産価値向上
- 拡張機能の継続性 - 2022用の多くの神器が2026でも問題なく動作
- Git管理の改善 - 依然として改善の余地はあるが、VS Codeとの併用で実用的
まとめ
Visual Studio 2026への移行は、思いのほかスムーズだった。2022の完成度が高かったからこそ、2026への移行も安心して進められる。最大の価値は、AI機能の強化にある。MCPによる拡張性、Copilotの統合、これらが日々の開発を支えてくれる。
Git管理については、依然として改善の余地がある。しかし、VS Codeとの併用という選択肢もある。完璧を求めるより、自分に合った使い方を見つけることが重要だろう。
2022という完成された神器の進化形である2026。その真価は、AI機能の強化に尽きる。日々の開発作業の中で、この新たな力を実感できるはずだ。新時代の神器を手に、あんたの冒険が、より豊かなものとなることを願っている。
おっと、相棒が「そろそろ次の実験に移りたい」と急かしている。今日の記録はここまでとしよう。
砂漠で見つけた魔法のランプ
- RedfishViewer - GitHub | 今回の移行実験の題材となったWPFアプリケーション。feature/1.1.0/package-updateブランチで変更内容を確認可能
- AutoMapper - Configuration | AutoMapper 16の設定方法を記した公式古文書。ILoggerFactoryの要件について詳述
- Visual Studio Marketplace | 拡張機能という名の神器を探す場所。互換性の詳細確認が重要
ラクダの独り言
ご主人、また新しい箱を手に入れて、一日中睨めっこしてるな。前の箱で何の問題もなかったのに、わざわざ新しいのに取り替えて。で、何が変わったって?俺には全く分からんが、ご主人は嬉しそうにあれこれいじくり回してる。
「AI機能が強化された」とか「設計図が読みやすくなった」とか、熱心に羊皮紙に書き込んでるが、正直、俺にはさっぱりだ。箱が光ってる様子は前と変わらんし、ご主人が眉間に皺寄せて呪文を唱えてる姿も相変わらずだ。
ただな、一つだけ分かることがある。ご主人、「削除できないものが残る」って、随分とイライラしてるな。何かの道具が、箱の中に居座って動かないらしい。人間ってのは、要らないものをキレイに片付けられないと、妙に気になる生き物なんだな。
まあ、俺は荷物を運ぶのが仕事だ。箱が新しかろうが古かろうが、ご主人が満足ならそれでいい。まったく、やれやれだぜ。