azukipochette's weblog

memory dump (mini)

Enterprise Architect の動作解析の設定を Visual Studio のバージョン・エディションに依存させない方法

f:id:AzukiPochette:20200315224327j:plain

unsplash-logoSneaky Elbow

調べてみると約 7 年ぶりの Enterprise Architect の記事です。大変久しぶりですが、内容は短めです。

Enterprise Architect にはコードを分析してモデルを自動生成することができる大変素晴らしい機能が搭載されています。
Visual Studio ソリューションを読み込むことで、動作解析の設定も自動的に設定してくれるのですが、残念ながら Visual Studio 2017 以降では正しく動作しないケースがあります。

原因と背景

この問題は、Visual Studio 2017 以降から複数のバージョンだけでなく、エディションも共存できるようになったことに起因しています。
複数のバージョンとエディションを共存できるようにするため、Visual Studio 2017 以降では次のようにフォルダ構造が見直されました。

C:\Program Files (x86)\Microsoft Visual Studio\<Version>\<Editoin>

このため、devenv.exe をコマンドラインで実行するためには、そのバージョンだけでなくエディションも知らなければ、パスを判断することができないのです。

解決策

個人で使うのであれば特定のバージョンとエディションで固定しまうのも1つの方法ですが、環境によって Visual Studio のバージョンやエディションが異なる場合は、動作解析の設定を環境に合わせて都度変更する必要があります。
これが面倒という方にオススメなのが、Visual Studio Locator (VSWhere) を利用する方法です。

Visual Studio Locator は、その名の通り Visual Studio がどこに保存されているのかを教えてくれる便利なコマンドライン ツールです。
Visual Studio 2017 (15.2) 以降では標準で搭載されており、絶対パスは %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe と決まっています。

というわけで、Enterprise Architect の動作解析の設定を以下のようにしておけば、devenv.com の完全パスを自動的に見つけてくれるようになります。*1

CD "path/to/your project folder"
FOR /F "usebackq delims==" %%X IN (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -find \**\devenv.com`) DO SET DEVENVCOM="%%X"
%DEVENVCOM% "<your solution>.sln" /build "Debug|Any CPU"

素敵ですね。

おまけ

Visual Studio Locator に興味がある方は、GitHub でコードが公開されていますので、そちらをご確認ください。

github.com

それでは、よい Enterprise Arctehict 生活を。Enjoy!

*1:Visual Studio 2017 以前のバージョンには対応していません。また、例では最新バージョンを使用するように設定していますが、特定のバージョンを見つけたい場合は -latest の代わりに -version オプションを使用してください