GHコンポーネントとNuGetパッケージの読み込みエラー

UnsplashのKostiantyn Liが撮影した写真

Rhino,GrasshopperのカスタムコンポーネントでExcel(.xlsx)のデータを読み込もうとしたら例外が発生しました。

ClosedXML

Excel(.xlsx)の読み込みはClosedXMLを使用しています。NuGetでClosedXMLをインストールして、カスタムコンポーネントをビルド。

この時点では特に問題なし。

その後、実際にGrasshopperで実行すると例外が発生します。

”Could not load file or assembly 'ClosedXML,...”

NuGetでインストールしたパッケージが参照できていないようです。

binフォルダを確認すると、確かに参照しているNuGetパッケージのファイルが1個も存在しません。カスタムコンポーネントのDLLだけが生成されています。

どうもデフォルトではNuGet関連のファイルはコピーされないようです。

対策

対策を調べると、単純にプロジェクトファイル(.csproj)を編集し、以下のプロパティを追加すればいいようです。

<PropertyGroup>
  <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

これでリビルドしてみると。。。、NuGetパッケージの関連ファイルも一緒に出力されています。

動作を確認すると、今度は例外も発生せず、意図した動きになりました。

今回はClosedXMLでしたが、NuGetパッケージを使う場合は注意が必要ですね。

動作環境

以下の環境で動作を確認しています。

  • Windows11 Pro(64bit, 23H2)
  • Rhinoceros 8 SR8
  • Visual Studio Professional 2022(17.10.3)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です