最近有个上位机项目,需要将海康VisionMaster的部分功能嵌入到统一的界面。项目使用WPF+dotNet6开发,UI库使用HandyControl。

        先说下需求,在某个TabItem内嵌入一个UserControl,UserContr内嵌入VisionMaster运行界面。

        本以为按照海康的教程或样例,一步步做下去,是一件很轻松就能完成的事情,结果完全和想象不一样。

        首先遇到的是引用Dll的问题!

        按照海康的教程,用下图的工具, 据说是能自动生成引用。

【在.net6和WPF框架下进行海康SDK开发】(一)如何引用Dll-LMLPHP

        然而,虽然上面显示写入完成,但是打开项目,点开“依赖项”一看,生成了个寂寞。

【在.net6和WPF框架下进行海康SDK开发】(一)如何引用Dll-LMLPHP

        因为海康的Demo都是.netFramework的,所以,猜测是不支持.net6? 那好办,再建一个.netFramework的项目,重新生成引用,确实可以!一下进来这么多dll!

【在.net6和WPF框架下进行海康SDK开发】(一)如何引用Dll-LMLPHP

        那么.net6项目就不能用了吗?先观察一下,.netFramework项目中的引用的dll是存在哪里?

【在.net6和WPF框架下进行海康SDK开发】(一)如何引用Dll-LMLPHP

        可以看到,这个dll并没有在项目文件夹下,而是在VisionMaster的安装目录下,也就是说前面生成引用的小工具,其实只是在项目的csproj文件内写入的这些引用文件的路径而已,打开项目文件,印证了这一想法。

 <ItemGroup>
    <Reference Include="Apps.ColorFun, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cfdb8c430127f15b, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="VM.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=61600122bc9264b9, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="VM.PlatformSDKCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c1484a72052ee3d4, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="VMControls.BaseInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14444b8df74b6e6a, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>
    <Reference Include="VMControls.WPF.Release, Version=1.0.0.0, Culture=neutral, PublicKeyToken=fdd2c8be7291c30c, processorArchitecture=MSIL">
      <Private>False</Private>
    </Reference>

        对于.net6项目,由于csproj文件的格式不一样了,所以写不进来也很正常。那么,在.netCore项目,怎么引用这些dll呢?其实,只要在“依赖项”上单击鼠标右键,弹出菜单前面三项,任选一项,在弹出的“引用管理器”对话框中,单击左侧“浏览”,再点右下角“浏览”按钮,去到VisionMaster的目录里,找到对应的dll引用即可。

【在.net6和WPF框架下进行海康SDK开发】(一)如何引用Dll-LMLPHP【在.net6和WPF框架下进行海康SDK开发】(一)如何引用Dll-LMLPHP

        添加部分引用后的项目如图:

【在.net6和WPF框架下进行海康SDK开发】(一)如何引用Dll-LMLPHP

至此,第一个难题暂时解决。

下一篇,将遇到一个更棘手的问题,VisionMaster和HandyControl的冲突!

09-28 00:34