1

私たちのアプリケーションは、C# / マネージ C++ CLI / ネイティブ C++ アセンブリと DLL の混合で構成されています。

アプリケーションの API を公開するラッパー アセンブリがあります。

たとえば、API を使用する新しいコンソール アプリケーションを作成するには、そのアセンブリを参照し、コンソール アプリケーションの出力ディレクトリをインストール済みアプリケーションの BIN ディレクトリに設定する必要があります。(リフレクションなどの使用により、すべてをアプリの BIN ディレクトリに保持し、そのディレクトリに出力する必要があります。1 つのアセンブリだけをローカルにコピーすることはできません。または、何も機能しません)。

私の問題は、ASP.NET Web フォーム アプリケーション (コンソール アプリとは関係ありません) を作成するときです。そのアセンブリを使用したいので、アプリケーションの BIN ディレクトリに Web アプリケーションを「配置」する必要があります。

私が試してみると、ASP.NETがそのBINディレクトリ内のすべてのアセンブリをプリロードしようとしたためにエラーが発生しました。

誰かがこれを機能させる方法についての指示を提供できますか? 参照アセンブリのすべての組み合わせ、それらすべてのコピー、LoadFrom の使用に何時間も費やしました。

4

1 に答える 1

1

これの構造を見ないと難しいですが…

ビン参照

Web アプリケーションを作成し、bin 参照を介して Web サイトから必要な dll を参照します。

Web アプリケーションを右クリックし、参照オプションを選択して、参照する必要がある dll を pcik します。ローカルにコピーを true に選択すると、dll が Web アプリケーションにコピーされるため、コンソール アプリが Web アプリに関連して必要な場所にあることに永遠に依存することはありません。

ただし、必ずしも使用するソリューションではありません。システムのアーキテクチャが少しずれているようです。むき出しにしているクロス etc...

また

GAC 参照

コンソール アプリから参照する必要がある dll - それらに厳密な名前を付けて、GAC (グローバル アセンブリ キャッシュ) に配置します。その後、両方のアプリがそれらを見ることができます。

dll をコピーします。

dll を Web アプリにコピーするバッチ ファイルを再実行するビルド後のステップをコンソール アプリに追加するという別の解決策があると思います。実際には、ビン参照とほぼ同じになると思います。

プロービング要素

web.configの要素を使用して<probing>、アセンブル用に他のディレクトリを検索するように CLR に指示できます (通常は、GAC と bin を実行するだけです (公平を期すための単純化はそれです))。これにより、API フォルダーを参照できるようになりますが、それはアプリケーション パスの下にある場合のみです。ここの誰かがこれを回避するために NFTS ジャンクションを使用していますが。

詳細はこちら

実際、この回答は、この種のことについてより多くの詳細を提供します

ASP.net アプリケーションで bin フォルダー外のアセンブリを参照するにはどうすればよいですか?

そして成功を祈る

于 2013-06-24T18:16:08.037 に答える