2010-11-18 7 views
4

nhibernateでlog4netの新しいバージョンを使用したいとします。 log4netのバージョンは自分自身でsvnソースからコンパイルされているので、publicKeyTokenが変更されたことを意味する新しいキーで署名しなければなりませんでした。バージョンを1.2.11.0に設定しました。問題は、nhibernateが古い1.2.10.0バージョンのlog4netを参照していることです。サードパーティのlibが旧バージョンに依存している場合、新しいpublicKeyTokenを持つ別のバージョンのアセンブリを使用してください。

私はApp.configファイルにこの部分でリダイレクトを結合アセンブリを構成してみました:

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="log4net" 
         publicKeyToken="1b44e1d426115821"/> 
    <bindingRedirect oldVersion="1.2.10.0" 
        newVersion="1.2.11.0"/> 
    </dependentAssembly> 
</assemblyBinding> 

どんな効果を持っていないようですが。 publicKeyTokenが一致しないためです。 :

これを行うか、私を行うには、他の方法があります。 log4net 1.2.10を使用して、私が興味を持っているsvnコードベースからの追加と修正を含むlog4net拡張プロジェクトを作成しますか? または b。私自身のlog4netビルドを使って独自のバージョンのnhibernateを構築する OR c。 log4netチームがlog4netの新しいバージョンを正しいpublicKeyTokenでリリースするようにする

私はcを好むだろう。正直なところ、私は年齢の新しいビルドバージョンをリリースしていない理由を理解できませんが、svnソースには多くの修正と新機能があります。

+1

はい、マイナーリビジョンに新しいキーを使用している作者は、非常にイライラする可能性があります。 – ladenedge

答えて

2

あなたが望むのは、署名を防止するためのものです。

オプションc)には、新しいHibernateビルドも必要であることに注意してください。

私はb)があなたのベストショットだと思います。

+1

新しいlog4netビルドは同じpublicKeyTokenを持つので、c)新しいnhibernateビルドを必要としないと思うので、アセンブリバインディングリダイレクトが機能するはずです。自分のビルドの問題は、別のキーで署名されているということです。 – Trygve

+0

はい、私はそれを間違って読んだ。古いキーを使用して更新する必要があります。 –

+0

ヘンク、あなたは言った、「あなたが望むのは、まさに署名が何を防ぐことを目指しているのかです。古いバージョンに対してコンパイルされたコードに動的にリンクされたアセンブリの新しいバージョンを使用できないのはなぜですか?それはどのようにセキュリティリスクですか? –

関連する問題