6

3つのプロジェクトを含むソリューションがあります。2つのプロジェクトがlog4netを参照しており、他のいくつかのDLLを参照しています。

インストールパッケージを作成し、各プロジェクトのプロジェクト出力を追加すると、DLLがメインの「アプリケーションフォルダー」にドロップされます。これらのDLLをセットアッププロジェクトで作成した別のフォルダーにドラッグすると、アプリケーションは「log4netが見つかりません」と表示されません。これらのDLL参照を「bin」などの名前で表示したいのですが、メインフォルダーだけでなく、混乱を招きます。メインフォルダーに2つの.exeを配置したいだけです。

「bin」フォルダを指すように、各プロジェクトに参照パスを追加してみました。次に、セットアッププロジェクトで、「bin」という出力フォルダーを追加し、DLLをそのフォルダーに移動しましたが、まだ機能しません。

何が足りないの!私は自分が間違っていることを理解しようと数時間見て回りました、多分それは私が生まれた方法でした!助けてくれてありがとう!

4

2 に答える 2

13

<probing>app.configファイルの要素を使用して、Fusion(アセンブリローダー)が検索するプライベートパスを指定できます。

これにより、バインドするアセンブリを検索するときにFusionが検索するアプリケーションディレクトリのサブパスであるパスを指定できます。例(ドキュメントページから抜粋)は次のとおりです。

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin;bin2\subbin;bin3"/>
      </assemblyBinding>
   </runtime>
</configuration>

これは、Fusionがbin、bin2 \ subbin(bin2、IIRCではない)およびbin3サブディレクトリで、それらにバインドしようとしたときにアセンブリを検索することを意味します。

于 2010-01-03T21:22:58.680 に答える
4

この目的のためにPrettyBinと呼ばれるnugetパッケージを作成しました。これは、ビルド後のターゲットをプロジェクトに追加し、dllを「lib」サブフォルダーに移動し、app.configを変更してそこを確認します

于 2014-12-16T12:06:42.377 に答える