Help us understand the problem. What is going on with this article?

UiPath Developer Community 第8回ワークショップ 覚え書き「カスタムアクティビティの、デバッガによるデバッグ方法について」

More than 1 year has passed since last update.

UiPath Developer Community 第8回ワークショップ で聞いてきた内容の覚え書き。。

行ってきました、第8回。回を追うごとに申し込みが困難になってますね、、。ちなみに次回は先着順になっていて、あっという間に埋まってしまいました。。。

さて今回のワークショップはEvent Monitoring やAI連携などがありましたが、自分的に目玉だったのは 「Debugging Custom Activities」つまり「カスタムアクティビティの、デバッガによるデバッグ方法について」です。

Visual Studioからデバッグしたい

ちょっとまえUiPathにおけるカスタムアクティビティの開発方法を結構調べていたのですが、情報がなくて困っていたのが開発したアクティビティのデバッグです。開発したアクティビティはnupkgになってUiPath StudioやRobotから実行されるわけで、Visual Studioからデバッグ起動って出来ないなーっておもってました。

今回の説明でVisual Studio デバッガーで実行中のプロセスへのアタッチ というやりかたを教えてもらいました。起動しているプロセスに対して、あと付けでVisual Studioのデバッガを接続する方法です。

まあ、よくよく聞いてるとUiPathの固有のやり方というよりはVisual Studioでのデバッグの一般論ぽいです。Visual Studio開発に慣れてるヒトにはもしかして当たり前の事だったのかも。

まあJavaでEclipseのケースでも、たとえばMavenで起動したWEBアプリをデバッグするとき

set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n -Xmx1024m -XX:MaxPermSize=128m

ってオプションつけて起動することでEclipseからデバッグできるようになりますが、コレと一緒ですね。

やってみる

今回サンプルでつかってる、カスタムアクティビティのソースです。

https://github.com/masatomix/UiPath_Path

このプロジェクトがVisual Studio上で読み込まれている状態で、かつ、UiPath Studio側でこのアクティビティがnupkgとしてインストールされている状態だとします。

あ、ココでnupkgに入れるためのDLLのビルドや、そのDLLをnupkg化する手順について、下記の注意点があります。

注意点1:ReleaseでなくてDebugでビルドする。

UiPath Studioで使用するカスタムアクティビティの作成方法#いったんビルド では、

ツールバーの Debug をReleaseへ変更し、ビルド>>ソリューションのビルド を選択します。

と書きましたが、デバッグのための情報を保持したDLLを作成するため、Debugのままでビルドします。

image.png

Debugでビルドすると、下記の出力(コンソール)からも分かるとおり、DLLファイルは Debugのディレクトリに出力されます。

1>------ すべてのリビルド開始: プロジェクト:Utils, 構成: Debug Any CPU ------
1>  Utils -> Z:\git\Path\Utils\bin\Debug\kino.UiPath.Utils.Activities.dll
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

次に書きますが、nupkgにする際にはこちらのDLLを使用します。

注意点2:nupkg 作成コマンド nuget pack のオプション変更

さて、上記で作成したDLLをnupkgにするのですが、UiPathのカスタムアクティビティのnupkgの作り方 では

Z:\git\Path\Utils> nuget pack Utils.csproj -Prop Configuration=Release

と書いたオプションの「Release」を

Z:\git\Path\Utils> nuget pack Utils.csproj -Prop Configuration=Debug

と「Debug」にします。そうすることで、DebugのディレクトリのDLLをつかってnupkgファイルを作成してくれます。

ついでにもう一点、細かい話ですが、UiPathのカスタムアクティビティ開発で、リソースの外部化とローカライズを行うで、nupkg作成用の設定ファイル「Utils.nuspec」に、下記のように

<files>
  <file src="bin\Release\ja\*.dll" target="lib\net45\ja" />
</files>

で「Release」ディレクトリのリソースファイルを明示的に指定していますが、厳密にはDebug側のファイルを利用するように記載を変えた方がよいでしょう。今回は、Release側に出力されているものをそのままつかっちゃえばいいやって事で、ココはいじらないでやってます。

デバッガからデバッグする

この作成したnupkgを UiPath Studioにインストールしておきましょう。

以上で、Visual Studio上でカスタムアクティビティのプロジェクトを読み込んだ状態でかつ、UiPath Studio側でデバッグ用nupkgがインストールされている状態になりました。

UiPath Studio上でカスタムアクティビティを使用したワークフローを作成し、UiPath Studioからワークフローを起動しておきます。その際、ワークフローが終了してしまわないよう MessageBox などで、実行中の状態を保っておくようにします。というのは、Visual Studioは起動しているプロセスに対してデバッガをアタッチするのですが、今回アタッチしたいプロセス「UiPath.Executor.exe」はワークフロー実行中にしか起動していないからです。

image.png

ようするにこんな感じのワークフローを作成し実行しておきます。

つづいて Visual Studio 側で「デバッグ >> プロセスにアタッチ」を選択します。

image.png

表示されたダイアログ上で「UiPath.Executor.exe」を選択し「アタッチ」をクリック。

image.png

Visual Studioがピピピって(?)反応するので、そしたら MessageBox を押下してワークフローをすすめると、、、

image.png

おお!デバッグ接続できましたね!paths変数の値などもちゃんと確認することが出来ます。

いやー、これで開発が捗りますね。

今回もとても有意義な情報を収集することが出来ました。ありがとうございます。

さいごに

デバッグのやり方のスライドと、ノベルティの「ノ・ミカタ」と、お食事。ノ・ミカタは忘年会に向けて需要がありそうです:-)。

image.png

食事は「四谷(?)の有名なカレー屋ですよ」 とおっしゃっていました(たぶんココ)。辛めでおいしかったです。しかし、スプーンだとお芋をいただくのに限界がありました :-)

おつかれさまでした。。

関連リンク

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away