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オフィシャル」としました。
NuGetサーバからライブラリのダウンロード
メニューバーの ツール >> NuGetパッケージマネージャ >> ソリューションのNuGetパッケージ管理 を開きます。
下記のような検索画面になるので、右上のパッケージソースを「UiPathオフィシャル」、検索ボックスに「Newtonsoft」と入れると、サイトを検索して結果を一覧してくれます。今回は Newtonsoft.Jsonを選択し、インストールをクリックしましょう。
よろしいですか?みたいなのを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
========== 終了 ==========
うまくいったようです。実際、コレをやるまでは、ライブラリがないってエラーになってたのが、
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 でみてみると
nupkgにも追加されているようですね!UiPath Studioにインストールして、Newtonsoft.Jsonライブラリが呼び出せることも確認しておきましょう。
おつかれさまでしたー。
参考:UiPath Studio 2018.3 が参照しているNuGetサーバについて
さて先にでてきた、UiPathオフィシャルの https://www.myget.org/F/workflow/ ですが、これらの情報は UiPath Studio 2018.3の設定から取ってくることができます。
抜き出してみると以下の通り。
名前 | 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のパッケージマネージャから上記らを設定しておくのがよいかもしれませんね。
関連リンク
- https://www.myget.org/gallery/workflow 2018.3でオフィシャルってのはたぶんココを検索してるっぽい
- https://gallery.uipath.com/ 2018.3系でコミュニティってなってるのはたぶんココ(2018.2系ではGallery)