UiPath カスタムアクティビティでプロジェクトディレクトリを取得する話
UiPathでEnvironment.CurrentDirectory
を設定すると、プロジェクトフォルダのパスが取れると思いきや
カスタムアクティビティの場合は、プロジェクトフォルダではなく、カスタムアクティビティが格納されている
nugetのフォルダが取れてしまい、予期せぬエラーに悩まされたので、忘れないうちに投稿します。
お約束事項(免責事項)
この記事は2020年6月時点の情報を基に作成しております。
記事の内容は私個人の見解であり、所属する組織の公式見解ではありません。
Environment.CurrentDirectory
プロセスのプロジェクトの場合
繰り返しになりますが、UiPathでProcessのプロジェクトでは、
Environment.CurrentDirectoryを指定すると
Main.xamlが格納されているプロジェクトフォルダが取得されます
ライブラリのプロジェクトの場合
UiPathでLibraryのプロジェクトとして
Environment.CurrentDirectoryを指定すると
Studio実行上では、プロジェクトのフォルダが取得されます。
そのため、問題が無いように勘違いしてしまいます。
問題の表面化
問題が発生することに気づくのはここからです。
先ほどのプロセスのプロジェクトで、カスタムライブラリーを追加し
実行すると、以下のように表示されます。
対策方法
やり方は、いろいろありますが私がお勧めする簡単なやり方を紹介します。
1. カスタムライブラリーのプロジェクトを開く
2. 引数を追加する
3. 既定値の設定
ここが最大のミソになります。
既定値に、Environment.CurrentDirectory
を指定します。
4. 引数の値を表示
最後に、メッセージボックスの内容を引数の値が表示されるように変更します。
実行
(事前確認)ライブラリーのプロジェクトでStudio実行
変更内容を確認するため、ライブラリーのプロジェクトでStudioから実行します
ライブラリのプロジェクトフォルダーが取得されています。
プロセスのプロジェクトでStudio実行
本題のプロジェクトフォルダに切り替えて、修正したライブラリを更新し
カスタムアクティビティを使ってみましょう
まとめ
- Environment.CurrentDirectory は、必ずプロジェクトフォルダを示すとは限らない
- プロセスのプロジェクトで実行した場合、プロセスのプロジェクトフォルダが取得できる
- ライブラリーのプロジェクトで実行した場合、ライブラリーのプロジェクトフォルダが取得できる
- カスタムライブラリーを使用したプロセスプロジェクトを実行した時に、プロジェクトフォルダでないライブラリが格納されたフォルダーが取得される
- 対処方法
- ライブラリのカスタムアクティビティで、引数を追加し既定値に
Envoroment.CurrentDirectory
を設定する
- ライブラリのカスタムアクティビティで、引数を追加し既定値に