私はこのことに非常に新しいので、私の質問がうまく構成されていないか、間違った場所などで謝っています。私はこれに対する解決策を探していて、私は、Nhibernateを利用するソリューションを持っているので、log4net/2.0 /フォルダーに入っているlog4net V1.2.10.0を使用する必要があります。しかし、私のソリューションは、私が非常に限られたアクセスしか持たない他の多くのソリューションにもリンクしています。これらは同じlog4net V.1.2.10.0をフォルダ内で使用しています:log4net/1.2/Nhibernate log4netと既存のlog4netとの競合を止めるにはどうしたらいいですか?
解決策を実行すると、このエラーが発生します。
{"Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=e27b8fa57f63a98d' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT:
0x80131040)":"log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=e27b8fa57f63a98d"}
は、しかし私は、たびに私は、すぐにそれは別のソリューションを使用しようとして、その溶液中にエラーが出るものを修正し、それを呼び出しているソリューションを改正しようとしたので、私は別のを修正しなければならないので、に。修正するソリューションが多すぎるだけでなく、他のソリューションとの相互関係が多すぎるため、log4net/2.0を使用するためにそれらをすべて変更できるように私がコントロールすることは絶対にありません。
私は基本的に同じ問題だと思うもう1つの質問(Referencing 2 different versions of log4net in the same solution)を見つけましたが、app.configをバインディングで修正していますが、私はこの権利を得ることはできません。同じエラー。私はそれが「あなたは、各バージョンのプロジェクトの一つに2フォルダを作成すると言うときに、他の質問への答えは何を意味するのかわからないんだけど
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="e27b8fa57f63a98d" />
<codeBase version="1.2.10.0" href="2.0\log4net.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821"/>
<codeBase version="1.2.10.0" href="1.2\log4net.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
:私は私のApp.configファイルに含まれてきた結合はこれですlog4net。各log4net.dllを対応するフォルダに配置します(追加参照ではなく)ソリューションにファイルを追加します。コピーする出力ディレクトリのプロパティを設定して、常にコピーして出力フォルダに自動的にコピーされますあなたが構築する。私のソリューションが参照するすべてのソリューションにこれを行う必要がありますか?
理想的には、ソリューションのいずれかが使用しているlog4netを気にしないが、お互いにログメッセージを引き渡すことができるという意味で、私のソリューションを改訂できるようにしたい。私はこれが可能であると仮定し、どんな助けも大いに評価されるでしょう。いずれか、またはどのようにしてnHibernateのロガーをオフにすれば、私が使っているlog4netが気にしないので、他のすべてのソリューションが使用しているlog4net/1.2を使い続けることができます。私はそれをオフにするすべての種類のものを試しましたが、それはまだlog4net/2.0を検索しようとしているようです。
申し訳ありませんが、私はこの部分を含めていないことに気付きました。上記のバインディングを使用すると、ソリューションを実行しようとするとすぐにこのエラーが発生します。 '{"ファイルまたはアセンブリ 'log4net、Version = 1.2.10.0、Culture = neutral、PublicKeyToken = 1b44e1d426115821'またはその依存関係の1つをロードできませんでした。 ) ":" log4net、Version = 1.2.10.0、Culture = neutral、PublicKeyToken = 1b44e1d426115821 "}'バインディングを使用しないと別のソリューションを参照しようとするまで実行され、エラーが表示されます。 –
あなたはどのバージョンのNHibernateを使用していますか? NHibernateは3.0.0以降、log4netの特定のバージョンを必要としません。 – cremor
OSSプロジェクトを開始するときに "DLL hell"というバージョニングの問題が発生することは珍しくありません。しかしそれに固執する価値がある –