7

ドキュメント ( hereおよびhere ) には、モジュール内の参照がどのように解決されるかに関する情報が著しく欠けています。

参照の解決

(TODO: csproj ファイルの "References" セクションと、各モジュールの "bin" ディレクトリにドロップされた追加のアセンブリ バイナリを見て、Orchard がどのように参照を判断するかを説明してください)

残念ながら、これはまさに私が必要としている情報です。カスタムビルドの社内 DLL への参照を持つカスタム モジュールを作成しました。この DLL からクラスを使用しようとすると、次の例外が発生します。

アセンブリ 'Custom, Version=[version], Culture=[culture], PublicKeyToken=[token]' から型 'Custom.MyClass' を読み込めませんでした。

したがって、私の質問は次のとおりです。オーチャードはモジュール参照で何をしますか?また、オーチャードにモジュールの参照を取得させるために何か特別なことをする必要がありますか?

編集:このブログ投稿とそのコメントで、より良い情報が見つかるようです。ただし、カスタム アセンブリは既に に存在するためsrc\Orchard.Web\App_Data\Dependencies、引き続きエラーが発生します。

EDIT2 : フォルダーにカスタム DLL のコピーがあるlibので、代わりにそれを参照しようとしましたが (別のモジュールが正常に動作するため)、それでも変更はありません。

EDIT3lib :: 前の 2 つの編集を参照すると、フォルダーからフォルダーへのコピーではありませんApp_Data\Dependencies。新しい DLL をフォルダーに追加してlib参照したところ、フォルダーに表示されませんでしたDependencies。現在のものはそこにあるものに取って代わっていないと思いますCustom.dll。そのため、私はエラーが発生しています。しかし、Orchard がDependenciesフォルダーにコピーしないのはなぜですか?

4

1 に答える 1

1

Orchard でカスタム モジュールを使用できるようにするには、それを次のパスに配置する必要があります。

次に、メイン モジュール (Web アプリケーション) にカスタム モジュールが表示されます。新しいモジュールを既存のオーチャード アプリに追加する場合は、おそらく管理パネル/モジュール メニューから手動で有効にする必要があります。新規インストールの場合、機能を有効にするディレクティブをレシピに追加し、メインの module.txt ファイルに依存関係を追加できます (モジュールを常にオンにしたい場合)。

別のトラブルシューティングのヒント:

  • モジュールのビルド パスが bin/ フォルダーに設定されていることを確認してください (bin/debug などではありません)。
  • モジュールが実際にオーチャード モジュール (module.txt ファイルがある) であり、管理パネル/モジュールに表示されることを確認します。
  • 有効になっていることを確認してください。新しいモジュールはデフォルトで無効になっています
  • 参照されるライブラリが静的フォルダーから参照されていることを確認してください。つまり、再構築中にクリーンアップされる bin のようなものからではありません。
于 2013-05-18T10:12:15.253 に答える