我需要從包含一個C#WinForms項目的解決方案引用EmguCV。在多個版本的引用程序集之間自動切換
同一個庫有四個版本,即x86 vand x64,每個版本都支持和不支持GPU。該庫需要引用EmguCV的託管DLL以及OpenCV的非託管DLL。通過後期製作活動將正確的非託管版本複製到[Bin]
文件夾很容易。
我希望能夠通過代碼輕鬆地在託管引用之間切換。也許類似如下:
public enum EnumEmguCvTarget
{
None, // Do not use EmguCv
EmguCvTargetTbb86, // Target EmguCv for x86 without GPU.
EmguCvTargetGpu86, // Target EmguCv for x86 with GPU.
EmguCvTargetTbb64, // Target EmguCv for x64 without GPU.
EmguCvTargetGpu64, // Target EmguCv for x64 with GPU.
}
public EnumEmguCvTarget EmguCvTarget
{ get { return (EnumEmguCvTarget.EmguCvTargetGpu64); } }
因爲我在編譯的時候(不是後期綁定)引用這些組件,是有辦法,我可以基於[EmguCvTarget]
價值版本之間切換編程?
這不起作用,引用和使用x64庫的dll無法同時加載或引用x86庫。你可以做的是創建一個接口項目(AnyCPU),然後通過反射裝載這些程序集,將其轉換爲接口並使用,就好像什麼也沒發生一樣。 – jessehouwing
@jessehouwing:謝謝。你能否詳細說一下'interface project'。另外,如果我訴諸反思,是否有辦法讓Intellisense像早期綁定一樣工作? –
是的,這是接口的整個想法:) – jessehouwing