2015年04月16日のGeneXus

本日もホテルへ歩いて帰りました。
新たなルートを開拓すべく、いままで通ったことのない道を選んでいたら、2時間以上もウロウロしてしまいました。
結局大回りして元の国道に戻ったりして、疲れたけど楽しかったです(小並感)

閑話休題。

仕事で、GeneXusと某社のExcel作成パッケージDLLとの連携方法を下調べしました。
前回のプロジェクトでは、GeneXusでJavaだったので、Apache POIをラップしたクラスを自作し、それをExternalObjectとして定義することで比較的簡単に連携が出来ました。
(その代りPOIで大変苦労しましたが)

今回はC#でASP.NETでIIS。
まったく、環境に対する知識も経験もないまま、手探りでの調査です。
まぁ、最終的にはC#ソースを生書きすることで連携は可能との結論に至ったのですが、ビルドは通るけど実行できない。

実行すると、web\binに配置したアセンブリをバインドしに行くのですが、バージョンが違うのでダメだとIISに怒られます。
古いバージョンのアセンブリを要求して、デプロイされている新しいバージョンを参照しようとしている模様。

で、4時間くらいドツボにはまる。
グローバルアセンブリキャッシュには対象のDLLは存在しないし、そもそもなにをもって古いバージョンをバインドしに行こうとしているのかが、わからない。

最終的には原因が判明し、コンパイラオプションで「/reference:xxxx.dll /lib:bin」と宣言していましたが、これを「/reference:bin\xxxx.dll」と変更したらOKでした。
どうもコンパイル時の検索パス上に古いバージョンのアセンブリが存在し、それとバインド時の検索パスが異なるため、だろうとの推論に。
……が、コンパイル時の検索パス上には古いバージョンのアセンブリは存在しないはずなので、微妙に納得していません。

.NET的にはconfig書けばいいのでしょうが、GeneXusだとそれも自動生成で上書きされてしまうので、意外に手間取りました。
それでも、意外になんとかなってしまうGeneXusは、工夫のし甲斐があり面白い言語(というかフレームワーク?)です。

投稿者:

空野 綾

扇子をこよなく愛する、やる気のない管理人。 今日も元気に多分どこかに出張中。

コメントを残す

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>