Emgu.runtime.windows.msvc.rt.x64 version conflict between Emgu.CV and Emgu.TF
vpenades opened this issue · comments
I have a project that uses both Emgu.CV and Emgu.TF.
Two day ago you updated Emgu.TF, which now uses the shared native libraries packages, to prevent binary overwriting as described in issues #61 emgucv/emgucv#371
Package | Version | msvc.rt.x64 version |
---|---|---|
Emgu.CV.runtime.windows | 4.5.1.4349 | 19.28.29336 |
Emgu.TF.runtime.windows | 2.4.1.1202 | 19.28.29337 |
As you can see, the two libraries use different version of the underlaying shared dependencies, which causes the compilation to fail due to version mismatch.
Temporary solution
There's a hack to solve the issue, which is to reference Emgu.runtime.windows.msvc.rt.x64
explicitly;
<PackageReference Include="Emgu.CV.runtime.windows" Version="4.5.1.4349" />
<PackageReference Include="Emgu.TF.runtime.windows" Version="2.4.1.1202" />
<PackageReference Include="Emgu.runtime.windows.msvc.rt.x64" Version="19.28.29337" />
Things are made more complicated because since Emgu.runtime.windows.msvc.rt.x64
is hidden from indexing, the reference needs to be added manually by editing the csproj file.
After this fix, it works, but Visual Studio is not dumb and reminds me in the solution explorer like this:
Expected solution
Ideally, Both Emgu.CV and Emgu.TF (and eventually, Emgu.TF.Lite) should use the same shared package versions, so they can play together nicely.
Thanks for pointing that out.
It has been fixed on Emgu CV side: emgucv/emgucv@0fce444
Instead of using a fixed version of MSVCRT (e.g. =19.28.29336) , the dependency on Emgu.CV.runtime.windows nuget package will now allow using more recent version of MSVCRT (e.g. >= 19.28.29336).
Thanks!
It could be nice if you could update the nuget packages more often, even with a prerelease postfix.... that would allow us to catch these changes sooner.