我计划使用两个Kinect。我已经安装了Kinect的VS C#,SDK 1.8和2.0,我的问题是:安装两个kinect:v1和v2
添加一个参考库(例如1.8)后,不能添加另一个参考库(例如2.0,消息“the参考...已经存在“)。我认为这是由于命名空间和类的名称是相同的。因此,我不能实例化第二个传感器,请问我该怎么做才能解决它,特别是如果有任何方法可以访问相同资源的不同版本(例如1.8版本和2.0版本中的KinectSensor类),那么,我不能实例化第二个传感器。 )?
我计划使用两个Kinect。我已经安装了Kinect的VS C#,SDK 1.8和2.0,我的问题是:安装两个kinect:v1和v2
添加一个参考库(例如1.8)后,不能添加另一个参考库(例如2.0,消息“the参考...已经存在“)。我认为这是由于命名空间和类的名称是相同的。因此,我不能实例化第二个传感器,请问我该怎么做才能解决它,特别是如果有任何方法可以访问相同资源的不同版本(例如1.8版本和2.0版本中的KinectSensor类),那么,我不能实例化第二个传感器。 )?
您的问题有几种解决方案。第一个(可能是最天真的)是创建两个不同的项目,每个项目都有不同的参考。然后你可以编写第三层,使用前两个项目提供的数据。
如果您确实需要在同一个项目中同时使用两个参考,但是还有其他选项,它包含使用extern别名。
首先,添加一个单引用(例如,Microsoft.Kinect,版本1.8)。然后,保存您的项目并关闭Visual Studio。在项目文件夹中,您应该找到一个.csproj文件,您可以使用文本编辑器打开该文件。看着它的内容,你会发现这样一行:
<Reference Include="Microsoft.Kinect, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
现在,更改与下面的人上面的一行:
<Reference Include="Microsoft.Kinect, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Aliases>KinectV1</Aliases>
</Reference>
<Reference Include="Microsoft.Kinect, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Aliases>KinectV2</Aliases>
</Reference>
您现在应该看到在同一个项目都引用,也当你用Visual Studio打开它。
那么你应该能够使用这样的事情:
// You must declare aliases here:
extern alias KinectV1;
extern alias KinectV2;
// Then some using...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// ... and do not forget Kinect!
using KinectV1;
using KinectV2;
// Now you can do something like this:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Something from Microsft.Kinect V2
KinectV2.Microsoft.Kinect.HandState hs = KinectV2.Microsoft.Kinect.HandState.Closed;
// Something from Microsft.Kinect V1
KinectV1.Microsoft.Kinect.Skeleton s = new KinectV1.Microsoft.Kinect.Skeleton();
}
}
}
如果你的项目没有进行编译,尝试关闭Visual Studio和删除隐藏名为.suo文件(在的同一个文件夹.sln您的项目文件)。
如果您还有其他麻烦,请关注this answer。
嗨维托外邦人,我解决了我的问题,通过使用DLL的外部别名。谢谢。 – Carl
感谢你们,我尝试了使用VS2012,我已经开始工作了。值得注意的是,我的第二个参考文献仍然在旁边有一个黄色三角形,表明它没有工作。我一直在挠头,直到我用“extern alias”等方式继续前进。Intellisense有点不高兴,但最终所有工作都很好,使用这种解决方案! – Wiredchop