2

我々のしたこと:

外部 Web サービスと対話する C# クラス ライブラリ プロジェクトを作成しました。「COM 相互運用に登録する」をチェックすると、この DLL が自動的に登録され、登録が行われた PC で使用できるようになります。その PC 上の Navision クライアントは、「自動化」変数を使用してこの DLL を見つけて使用できます。


どうしたの?

この DLL を運用環境にロールアウトする必要があります。ユーザーが使用する2つのRDPサーバーでnavisionクライアントが実行されるRDPソリューションを使用しています。つまり、これら 2 つのサーバーに DLL を展開できればよいということです。ここといくつかのブログ記事で見つけた次の 2 つの解決策を試しました。

  • DLL を C:\windows\assembly にドラッグします (管理者として)
  • REGASM を使用して DLL を登録します (REGASM ourDll.dll /tlb:ourDll.dll)

これらを実行した後、CREATE コマンドを使用して初期化しようとした Navision の DLL を見つけました。

CLEAR(ourDll);
CREATE(ourDll);
IF ISCLEAR(ourDll) THEN
    CREATE(ourDll);

しかし、この後、次のエラー (翻訳版) が表示されます。

このメッセージは C/AL プログラマ向けです。

ID GUID={guid} 1.0:{guid}:'ourDll'.Consume のオートメーション サーバーによって識別される OLE コントロールまたはオートメーション サーバーのインスタンスを作成できませんでした。

OLE コントロールまたはオートメーション サーバーが正しくインストールされ、登録されているかどうかを確認します。

この後、GACUTIL /i ourDll.dll を実行して DLL を GAC にインストールしようとしましたが、結果は同じままです。これを行ったので、エラー メッセージが表示されます。

バッファーに対してテキストが長すぎます。

ただし、このエラーはコンパイルのナビゲーションを停止していないようです。実行時のエラー メッセージは上記と同じままです。

4

3 に答える 3

1

私たちはこれを解決し、ここで最終的な解決策を共有することができたので、同じ状況に陥った人々が私たちがこれに費やした多くの時間を費やす必要がなくなるかもしれません:

問題は GUID やインターフェイスではなく、使用されている .NET Framework の REGASM のバージョンにありました。

ターゲット フレームワークが 3.5 だったので、REGASM のバージョンも 3.5 以下である必要があると想定し、64 ビット フレームワークの REGASM を使用する必要があると想定しました。しかし、かなりの量の試行錯誤の後、私たちが使用しなければならなかったバージョンは 32 ビット v4 REGASM であることがわかりました (下記の登録用に使用した .bat ファイルを参照してください)。これによりすべての問題が解決され、私たちの DLL は現在 Navision で喜んで使用されています。クライアント。

SET GACUTIL="C:\Program Files (X86)\Microsoft SDKs\Windows\v7.0A\bin\gacutil.exe"
SET REGASM="C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\regasm.exe"
%REGASM% OurDll.dll /tlb:OurDll.tlb
%GACUTIL% /i OurDll.dll
于 2013-06-20T08:16:47.267 に答える
0

NAV 2009 R2 または 2013 を使用していると仮定すると、グローバルに登録すると、IDE からアクセスできるようになります。実際に NAV サービス層がアセンブリを使用できるようにするには、アセンブリのコピーも配置する必要があります。C:\Program Files\Microsoft Dynamics NAV\70\Service\Add-ins

于 2013-06-13T15:59:55.357 に答える