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

UiPathのカスタムアクティビティ開発で、外部ライブラリを使用する

More than 1 year has passed since last update.

UiPathでJSON文字列をDictionaryで生成する に書いたDictionaryから JSON文字列を作成するTIPSについて、あ、そういうアクティビティを作ったら便利かな、と思って作り始めていますが、

Newtonsoft.Json.JsonConvert.SerializeObject(jsonDic)

コレを呼び出すには プロジェクトがNewtonsoft.Json ライブラリを参照できている必要があります。また成果物のnupkgにもその依存関係を記述しておく必要があります。それらを設定する時の作業メモ。

作業手順

結論をいうと外部ライブラリの参照は、Visual Studioプロジェクト内でライブラリの依存関係を設定すればOKです。Visual Studioの NuGetパッケージの管理画面で依存関係を設定すれば、そのままnupkgにもその依存関係が反映されるようです。

ということで流れは以下の通り。

  • UiPath Studioがライブラリをダウンロードするのに使用するNuGetサーバを、Visual StudioのNuGetパッケージ管理画面で追加
  • そこから必要なライブラリ(今回はNewtonsoft.Json) を指定

すればOK。

今回のソースコード

修正前ですが、
https://github.com/masatomix/UiPath_Path/tree/0.1.32
にあります。

UiPath StudioのオフィシャルのNuGetサーバの追加

はじめに、UiPath Studioがライブラリのダウンロードに使用するNuGetサーバを、Visual Studioからも参照できるようにします。

メニューバーの ツール >> NuGetパッケージマネージャ >> パッケージマネージャ設定 を開き、パッケージソースとして、 https://www.myget.org/F/workflow/ を追加します。名前は「UiPathオフィシャル」としました。
image.png

NuGetサーバからライブラリのダウンロード

メニューバーの ツール >> NuGetパッケージマネージャ >> ソリューションのNuGetパッケージ管理 を開きます。

下記のような検索画面になるので、右上のパッケージソースを「UiPathオフィシャル」、検索ボックスに「Newtonsoft」と入れると、サイトを検索して結果を一覧してくれます。今回は Newtonsoft.Jsonを選択し、インストールをクリックしましょう。
image.png

よろしいですか?みたいなのをOKすると、

'.NETFramework,Version=v4.5' を対象とするプロジェクト 'Utils' に関して、パッケージ 'Newtonsoft.Json.8.0.3' の依存関係情報の収集を試行しています
依存関係情報の収集に 1.93 sec かかりました
DependencyBehavior 'Lowest' でパッケージ 'Newtonsoft.Json.8.0.3' の依存関係の解決を試行しています
依存関係情報の解決に 0 ms かかりました
パッケージ 'Newtonsoft.Json.8.0.3' をインストールするアクションを解決しています
パッケージ 'Newtonsoft.Json.8.0.3' をインストールするアクションが解決されました
'UiPath オフィシャル' からパッケージ 'Newtonsoft.Json 8.0.3' を取得しています。
パッケージ 'Newtonsoft.Json.8.0.3' をフォルダー 'Z:\git\Path\packages' に追加しています
パッケージ 'Newtonsoft.Json.8.0.3' をフォルダー 'Z:\git\Path\packages' に追加しました
パッケージ 'Newtonsoft.Json.8.0.3' を 'packages.config' に追加しました
スクリプト ファイル 'Z:\git\Path\packages\Newtonsoft.Json.8.0.3\tools\install.ps1' を実行しています...
'Newtonsoft.Json 8.0.3' が Utils に正常にインストールされました
NuGet の操作の実行に 14.96 sec かかりました
経過した時間: 00:00:17.2103937
========== 終了 ==========

うまくいったようです。実際、コレをやるまでは、ライブラリがないってエラーになってたのが、
image.png

エラーが解消されましたね。
image.png

nupkg作成

さて、nupkgを作成してみると、、、、

Z:\git\Path\Utils> nuget.exe pack Utils.csproj -Prop Configuration=Release
'Utils.csproj' からパッケージをビルドしています。
MSBuild auto-detection: using msbuild version '15.8.169.51996' from 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\bin'.
'Z:\git\Path\Utils\bin\Release' のファイルをパックしています。
メタデータに 'Utils.nuspec' を使用しています。
packages.config が見つかりました。依存関係として登録されているパッケージを使用します
Successfully created package 'Z:\git\Path\Utils\kino.UiPath.Utils.Activities.0.1.35.nupkg'.

中身を、NuGet Package Explorer でみてみると

image.png

nupkgにも追加されているようですね!UiPath Studioにインストールして、Newtonsoft.Jsonライブラリが呼び出せることも確認しておきましょう。

おつかれさまでしたー。

参考:UiPath Studio 2018.3 が参照しているNuGetサーバについて

さて先にでてきた、UiPathオフィシャルの https://www.myget.org/F/workflow/ ですが、これらの情報は UiPath Studio 2018.3の設定から取ってくることができます。
image.png

抜き出してみると以下の通り。

名前 URL
オフィシャル https://www.myget.org/F/workflow/
コミュニティ https://gallery.uipath.com/api/v2
nuget.org https://api.nuget.org/v3/index.json ← これは手動で追加したかも
ローカル C:\Users\[ユーザ名]\AppData\Local\UiPath\app-18.3.1\.\Packages

したがって、UiPath Studioのカスタムアクティビティ開発で外部ライブラリを参照するには、Visual Studioのパッケージマネージャから上記らを設定しておくのがよいかもしれませんね。

関連リンク

masatomix
JavaEEの開発やリッチクライアント開発のアーキテクトが専門でしたが、最近はRPAとAIがメイン。。。RPAはUiPathとOrchestratorの構築が中心です。 FirebaseとかOAuth/OIDCなど新しいモノ、あと数学もすき。 最近は Uipath Friends っていうユーザコミュニティにも関わってます。 あ、UiPath Japan MVP 2019 す。
primebrains
プライム・ブレインズは、マネジメントスキルだけでなく、最新のITスキルを兼ね備えた技術者がお客様の立場でお客様と共に、成功に向けてプロジェクトを推進します。
http://www.primebrains.co.jp/
Why not register and get more from Qiita?
  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
No 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
ユーザーは見つかりませんでした