DOBON.NETプログラミング道掲示板

ツリー一括表示

Nomalアイコン メジャーバージョンの異なるLog4netライブラリを参照したい /なおし (20/07/09(Thu) 09:55) #34495
Nomalアイコン Re[1]: メジャーバージョンの異なるLog4netライブラリを参照したい /魔界の仮面弁士 (20/07/09(Thu) 11:59) #34496
  └Nomalアイコン Re[2]: メジャーバージョンの異なるLog4netライブラリを参照したい /Hongliang (20/07/09(Thu) 13:05) #34497
    └Nomalアイコン Re[3]: メジャーバージョンの異なるLog4netライブラリを参照したい /なおし (20/07/10(Fri) 10:58) #34498
      └Nomalアイコン Re[4]: メジャーバージョンの異なるLog4netライブラリを参照したい /なおし (20/07/15(Wed) 17:30) #34508 解決み!


親記事 / ▼[ 34496 ]
■34495 / 親階層)  メジャーバージョンの異なるLog4netライブラリを参照したい
□投稿者/ なおし 一般人(1回)-(2020/07/09(Thu) 09:55:04)
  • アイコン環境/言語:[Windows10, C#, .NET Framework 4.5.2] 
    分類:[.NET] 

    単独で実行可能なWindows Fromsアプリケーションを開発しています。
    開発にあたり、複数のライブラリを利用しているのですが、これらに異なるバージョンのLog4netライブラリを参照するものが含まれています。

    ・参照DLL:AAA.dll が、log4net の 1.2.10.0 を参照する。
    ・参照DLL:BBB.dll が、log4net の 2.0.8.0 を参照する。

    この状況で、新しいバージョンの 2.0.8.0 の log4net を参照して実行すると、

    ----------------
    System.IO.FileLoadException: ファイルまたはアセンブリ 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)
    ファイル名 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' です。'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821'
    ----------------

    とエラーとなってしまいます。
    ネットで調べて、同じような目に遭っている

    https://www.it-swarm.dev/ja/.net/%E5%90%8C%E3%81%98%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7log4net%E3%81%AE2%E3%81%A4%E3%81%AE%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B/969316636/

    を参考に、app.config を以下のように変更したものの、発生するエラーに変化がありません。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral" />
    <codeBase version="1.2.10.0" href="log4net.1.2.10/log4net.1.2.10.dll" />
    </dependentAssembly>
    </assemblyBinding>
    </runtime>
    </configuration>

    これらAAA.dll, BBB.dllの何れも、私共の会社で作成しているものではないため、参照先log4netのバージョンを変更してリビルド、ということが難しい状況にあり、苦慮しております。

    何か指定の仕方にあやまりがあるのでしょうか。
    お気づきのことがありましたら、ご指摘いただけると幸いです。
違反を報告
[ □ Tree ] 返信 削除キー/

▲[ 34495 ] / ▼[ 34497 ]
■34496 / 1階層)  Re[1]: メジャーバージョンの異なるLog4netライブラリを参照したい
□投稿者/ 魔界の仮面弁士 大御所(1285回)-(2020/07/09(Thu) 11:59:05)
  • アイコンNo34495に返信(なおしさんの記事)
    > app.config を以下のように変更したものの、

    その定義だと、dependentAssembly 要素が 1 組しかないようですね。
    1.2.10.0 向けと 2.0.8.0 向け用それぞれに
    //dependentAssembly/assemblyIdentity[@name="log4net"]
    のノードを用意してみては如何でしょう。

    https://pie001.hatenablog.com/entry/2016/12/22/100714
    https://www.it-swarm.dev/ja/.net/*/969316636/
違反を報告
[ 親 34495 / □ Tree ] 返信 削除キー/

▲[ 34496 ] / ▼[ 34498 ]
■34497 / 2階層)  Re[2]: メジャーバージョンの異なるLog4netライブラリを参照したい
□投稿者/ Hongliang 大御所(582回)-(2020/07/09(Thu) 13:05:55)
  • アイコンフォルダ構成はちゃんとしていますか?
    Releaseのほうだけlog4net.1.2.10\log4net.1.2.10.dllを配置してて
    Debugで実行してるとかないですか?
違反を報告
[ 親 34495 / □ Tree ] 返信 削除キー/

▲[ 34497 ] / ▼[ 34508 ]
■34498 / 3階層)  Re[3]: メジャーバージョンの異なるLog4netライブラリを参照したい
□投稿者/ なおし 一般人(2回)-(2020/07/10(Fri) 10:58:32)
  • アイコン魔界の仮面弁士様、Hongliang様、コメントくださいましてありがとうございます。
    まずは魔界の仮面弁士様にご指摘くださいました、両方ちゃんと指定したものの、状況変わらず同じエラーが発生しております。
    また、Hongliang様にご指摘くださいました、app.configに指定したパスと、実際のDLLファイルの配置が適切か、についてもあらためて確認しておりました、以下のように適切?に配置している状況となっておりました。

    プロジェクト
    └bin
     └Debug
      ├log4net.1.2.10
      │└log4net.1.2.10.dll
      ├log4net.dll ※v2.0.8.0 のものです。
      ├AAA.dll
      ├BBB.dll
      ├WindowsFormApplication.exe
      ├WindowsFormApplication.exe.config
      └他DLL

    この構成で、app.configの中身は以下となっています。
    (ビルドにより作成されるWindowsFormApplication.exe.configも中身同じです)

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="log4net" culture="neutral" publicKeyToken="669e0ddf0bb1aa2a" />
    <codeBase version="2.0.8.0" href="log4net.dll" />
    <!-- 以下の指定をいれてもダメでした。 -->
    <!-- <bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0" /> -->
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="log4net" culture="neutral" publicKeyToken="1b44e1d426115821" />
    <codeBase version="1.2.10.0" href="log4net.1.2.10/log4net.1.2.10.dll" />
    </dependentAssembly>
    </assemblyBinding>
    </runtime>
    </configuration>


    実行に際し、VisualStudioからのデバッグ実行だけでなく、上記フォルダ内の「WindowsFormApplication.exe」を直接実行しても同じ結果となっています。

    どうも、app.configの設定を読んでくれているのか、というそもそもの疑問がわいておりまして、
    新しくWindowsFormアプリケーションを最小構成で作成して、リトライしてみます。

    取り急ぎ、お礼と現状報告までとさせてください。
    結果はまたここでご報告させていただきます。

    ありがとうございました。
違反を報告
[ 親 34495 / □ Tree ] 返信 削除キー/

▲[ 34498 ] / 返信無し
■34508 / 4階層)  Re[4]: メジャーバージョンの異なるLog4netライブラリを参照したい
□投稿者/ なおし 一般人(3回)-(2020/07/15(Wed) 17:30:23)
  • アイコン魔界の仮面弁士様、Hongliang様、ご報告が遅くなりましたが、異なるLog4netの
    バージョンを参照するDLLのみで構成したモジュールで色々切り分けたものの、
    app.config に記述するやり方では問題を回避することが出来ませんでした。

    私共のスキルでは回避できないと判断し、AAA.dll と log4net.dll(1.2.10.0)
    を別フォルダに配置し、アプリケーションドメインを別に作りその中で AAA.dll
    を読み込んで、プロキシ経由で AAA.dll の機能を利用することにしました。
    今のところ問題無いようですので、これで進めようと考えています。

    色々とご示唆いただきありがとうございました。
解決み!
違反を報告
[ 親 34495 / □ Tree ] 返信 削除キー/


Mode/  Pass/


- Child Tree -