Different versions of Enterprise Library in one process

We are developing an add-in for Autodesk Inventor. Our software is a bunch of dll assemblies loaded into Inventor at runtime. We have decided to use the Microsoft Enterprise Library 5.0 for logging and exception handling.

Now we have a problem, because it turns out Inventor 2013 uses Enterprise Library 4.1. When our add-in is loading, it fails to load the proper version of an assembly, because Inventor already has an older version in its Bin directory.

Options we have considered so far:

  • During deployment of our product, overwrite the old libraries in Inventor's Bin folder
  • Use EL 4.1 in our assemblies
  • Both are bad and I'm running out of ideas, so I'm asking for help.

    Option 1 raises this question: is the Enterprise Library backwards compatible and will replacing those DLL's in the Bin folder cause problems? I have tried it, Inventor doesn't complain and works as expected (haven't checked the EL functionality).

    Option 2 makes us use the older version and binds us to the version Autodesk is using, so we would have to watch when they upgrade, especially when they release a new version of Inventor.

    What is the best practice in this scenario?

    UPDATE:
    We solved this by just putting the newer version of Enterprise Library in GAC. I think what happened here was that .NET tried loading the older version first (because it was higher in assembly search order) and after failing never went any further to look for the proper version. When in GAC, it correctly resolves.


    From what I can see, a reasonable solution would be to embed the assemblies and access them using the ResourceManager class, this would allow you to use the newer versions whilst maintaining the parent projects logging mechanism.

    You might find this question useful: Embedding assemblies inside another assembly

    链接地址: http://www.djcxy.com/p/66038.html

    上一篇: 用Linq自动序列化到Sql

    下一篇: 一个进程中的不同版本的企业库