Blend for Visual Studio 2017 というもう一つの無料開発環境

午前4時半起床,晴れ.Visual Studio 2017 に移行完了するまでには越えなくてはならない山がいくつもありそうだが,まず第一の関門はインクルードファイルパスの設定だ.これまでツール→オプション→プロジェクトおよびソリューション→VC++ディレクトリ→インクルードファイルで設定していたものだが,2017では個別プロジェクトごとに設定するようになっている.「非推奨」となっているが,設定する場所がないのだから事実上「禁止」と同じだ.なぜこのような「設計変更」が必要になったか?ということに関しては理解できる.

2017の目標は単一のソースでクロスプラットフォームに対応するというものだからだ.これまでもバージョンの変位によってDLLをどう配置するかなどいろいろな問題が出ていたが,それらを「包括的」に解決し任意のバージョンをそれぞれ独立に走らせることができるようにするというのが目的だ.たとえばゼルコバの木で言えば,切り株アイコンのゼルコバの木クラシック,ゼルコバの木ベータ,ゼルコバの木2018の3つの異なるパッケージがあるが,これらすべてが同一環境で安定に走ることは現状では必ずしも保証できない.

仮に Visual Studio 2015 でビルドしたX86バージョンを ゼルコバの木2018,Visual Studio 2017 でビルドしたX64バージョンをゼルコバの木2020と呼ぶとすれば,共通のソースファイルを使いながらこれら2つのバージョンを安定に供給できるようにしなくてはならない.2005ではインクルードパスはPC全体に適用されるのでこのような要請に応えることはできない.このような問題を解決するためにプロジェクトごとに個別設定するという方式が導入されたと考えられる.

マイクロソフトはVisual Studio Community と Visual Studio Code という2つのIDEを無償で供給しているが,この2つのIDEの性格はほとんど対蹠的なものだ.VS Community は高度のユーザインタフェースを完備したスタンドアローン型の開発環境だが,VS Code はほとんど原始的と言ってもよいCLIベースの分散開発環境だ.明らかにVS Code はUNIXのカルチャに属するものであり,これまでのマイクロソフトの路線とは大幅に異なる.コマンドプロンプトからコマンドを打つなどというのはほとんどDOSの時代に戻ったようなイメージだが.

VS Code は「デバッガを持つエディタ」であり,開発環境と呼ぶにはあまりに原始的だが,UNIXユーザは実際ずっとそれでやってきているので,さほど苦にしないのだろう.つまり,端末からViでエディトしコマンドを打ち込んでリモートデバッグするというイメージだ.VS 2017 を使おうとすればその背後にあるこのポリシーの変化に対応しなくてはならない.環境設定などもダイアローグ上で指定位置に記入するのではなく,ファイルを直接開いて自分で編集するという作法だ.

さて,それが通用するものかどうか?やってみよう.スタートメニューに Blend for Visual Studio 2017 というのがあったので開いてみたら下記のパネルが出た.

image

AzureとGitはどちらもクラウドベースの開発チームサービスだが,マイクロソフトはどちらも等分にサポートしている.Azureはマイクロソフトに属するがGitはパブリックドメインだ.サインインしたら Visual Studio Code とフィーリングのよく似た画面が出てきた.

image

しかし,これは Visual Studio Code そのものではないように思われる.VS Code はすでにインストール済のはずなのだが,スタートメニューには載っていない.いや,あった.これがその画面だ.上のBlend for Visual Studio 2017 をいつどこでインストールしたのかまったく覚えていない.こんな状態では簡単に釣られてしまうね!

image

VS 2017.MS Blend for VS,VS Code はすべて同じアイコンの色違いを使っている.Blendの画面はVS Codeに似ているが,VS 2017にも似ている.これが「ブレンド」の由来だろう.VS 2017との違いは,Blendではもはや Microsoft Visual Studio 2017 Installer も通用しないということだ.VS 2017ではmsiインストーラは非正規だが使うことはできる,Blendでは通用しないということだろう.

「セットアッププロジェクトは開けない」という警告を無視してロードすると,前回と同じように「変換レポート」が出たが,今度はエラーは大幅に減少してSetupBeta3の1件だけになった.ZelkovaTree.slnソリューションにメッセージが1本入っているので読んでみよう.「ソリューションファイルは移行の必要がありません」というものだ.状態から考えるとこれで「移行」は完了しているものと思われるのだが…このあと,以下のパネルが表示された.

image

このBlendというツールは基本的にはVS 2017とまったく変わらない.というか,そのサブセットと言ってよい.メニューで比較すると,「テスト」と「分析」がないだけでそれ以外は完全に一致している.完全一致と断定するのはやや語弊がある.サブセットと言うべきだろう.Blendの表示→その他のウィンドウにはプロパティマネージャはない.

ソリューションエクスプローラにソースファイルは表示されるようになったが,ヘッダファイルが開けないというエラーがぞろぞろと出ている.しかし,プロジェクトのツリーの「ヘッダファイル」には必要なすべてのファイルが表示されている.エラーになるヘッダファイルにはCのヘッダファイルも含まれている.まず,これを見ることにしよう.

現在ZelkovaDLL3プロジェクトから参照しているインクルードファイルは以下の6フォルダだ.

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\VS\UnitTest\include
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Include\um

見たところとくに問題はないように見える.ダミーの空のプロジェクトを作ってみた.stdafx.cppとstdafx.hの2本のファイルしか含まないDLLプロジェクトだ.stdafx.cppにインクルール文を挿入して動作をチェックした.まず,Cのヘッダファイルは<stdio.h>のような形式ではなく”stdin.h”でないとダメなようだ.また,VC\PlatformSDKに入っているヘッダにもアクセスできない.たとえば,MAPIWIN.Hというファイルがそうだ.2017にはPlatformSDKというフォルダはないように思われる.MS VS 8には入っているが…ここにはMAPIWIN.Hというファイルが存在しない.かなりまずい.

INCLUDEフォルダに入っているヘッダファイルはプロジェクトのヘッダファイルに入っていてもコンパイル時に参照できない.プロジェクトと同じレベルなら見える.何か方法はありそうに思われるが,とりあえず,その方式を試してみよう.ダメだ.効かない.

D:\ZELKOVA_2020\ZELKOVA\MFCLibrary1\stdafx.h

C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared\sdkddkver.h

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\winrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\cppwinrt
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Include\um

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA