FluentMigratorによるマイグレーションをVisualStudioの外部コマンドに設定し、ショートカットから実行する

今までFluentMigratorはコマンドプロンプトから起動していましたが、少々面倒でした。

そこでVisualStudioで使う方法がないかを探したところ、以下のブログがありました。
Launch FluentMigrator from within Visual Studio - Thomas Van Machelen's adventures in code

 
しかし、MS Accessで試してみて悩んだところがあったため、メモを残しておきます。

 

環境

 

流れ

大まかな流れは上記のブログポストと同じです。

 

NuGetでインストール

今回は Fluent Migrator Toolsをインストールします。

f:id:thinkAmi:20141215051853p:plain

 

プロジェクトへ追加

必要なライブラリをプロジェクトへ追加します。

プロジェクトの上で右クリック、追加 -> 既存の項目の追加を選択し、Migrate.exeFluentMigrator.Runner.dllリンクとして追加します。

f:id:thinkAmi:20141215051904p:plain

なお、MS Access x86版をインストールした端末で実行しようとすると、「'Microsoft.ACE.OLEDB.12.0' プロバイダはローカルのコンピュータに登録されていません」エラーが発生しました。

どこかで見たようなエラーだと思って探してみると、自分のブログに書いてありました。
'Microsoft.ACE.OLEDB.12.0' プロバイダはローカルのコンピュータに登録されていません - メモ的な思考的な

 
そのため、AnyCPUフォルダのものではなく、x86フォルダのライブラリを追加してみたところ、問題なく動作しました。

ちなみに、FluentMigratorのx86版は以下のところにありました。

path\to\project_root\packages\FluentMigrator.Tools.1.3.0.0\tools\x86\40

 

リンクして追加したファイルのプロパティ変更

続いて、リンクとして追加した上記2ファイルのプロパティを以下の通りに変更します。

プロパティ
出力ディレクトリにコピー 常にコピー
ビルドアクション なし

 
出力ディレクトリに常にコピーするとすることで、FluentMigratorのライブラリを使えるようになります。

また、ビルドアクションをなしにしないと、VisualStudioに以下の警告が残ったままになります。
MSB3178: アセンブリ ‘‘ はファイルとして正しく指定されていません。 | あいしん スタッフぶろぐ

 

外部ツールの設定内容

メニューのツール > 外部ツール にて、外部ツールを追加します。

なお、外部ツールの引数($(BinDir)など)として設定可能なものは、以下に記載がありました。
外部ツールの引数 - MSDN

 
参考ブログと異なり、今回は接続文字列を外部コマンド引数として与えてみました。

項目
タイトル Development_FluentMigrator_Up
コマンド $(BinDir)\Migrate.exe
引数 --conn "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\path\to*.accdb" --provider jet --a $(TargetName)$(TargetExt) --verbose=true
初期ディレクトリ $(BinDir)

 
設定後、OKボタンを押すと

このコマンドは有効な実行ファイルではありません。コマンドを変更しますか?

と表示されますが、参考ブログに従い、 いいえ を選択します。

f:id:thinkAmi:20141215051930p:plain

 
ここまでで、VisualStudioのメニューのツールの下に「Development_FluentMigrator_Up」が表示され、FluentMigratorを実行できるようになります。

なお、今回はFluentMigratorのMigrateだけを記載しましたが、同じ方法でRollbackも用意しておくと便利です。

 

ショートカットを作成する

ショートカットを作れば手軽にマイグレーションできるため、作成しておきます。

メニューより、 ツール > オプション を選択します。

オプション画面では、左側の 環境 > キーボード を選択します。

右側に設定画面が出るため、

  1. 「以下の文字列を含むコマンドを表示」に ツール.外部コマンド を入力
  2. 外部コマンド1が一番上の外部コマンドに該当するようなので、ツール.外部コマンド1を選択し、ショートカットキー欄で Ctrl + KMの順で入力
  3. よければ、「割り当て」ボタンを押す
  4. 最後に「OK」ボタンを押す

と設定します。
参考: 方法: アクセス キーとショートカット キーを外部ツールに割り当てる *1

f:id:thinkAmi:20141215051939p:plain

 
あとは、ショートカットキーを押して実行すると、出力ウィンドウにFluentMigratorのログが表示されます。

*1:「このドキュメントはプレビュー版であり、後のリリースで変更されることがあります」と記載がありますが、正式版っぽいのは機械翻訳で分かりにくかったです - 方法: Visual Studio から外部ツールを実行する - MSDN