在Kinect SDK中加载INuiInstanceHelper不一致的问题

本文关键字:不一致 问题 INuiInstanceHelper 加载 Kinect SDK | 更新日期: 2023-09-27 18:01:42

我在这里和MSDN论坛上都发现了这个问题和潜在的解决方案,但我的问题有点不同。当我调用Runtime类上的函数时,我得到了这个异常:

先。FileNotFoundException:无法加载文件或程序集'INuiInstanceHelper, Version=1.0.0.10, Culture=neutral, PublicKeyToken=31bf3856ad364e35'或其依赖项之一。

我做不是得到这个错误时,构建运行时在一个简单的场景(例如在WPF加载的事件。

在我的实际场景中,当用户从打开文件对话框中打开文件时,我的运行时的actor被调用。这是从ViewModel中的MenuItem命令开始的,它使用一个"服务"来包装打开文件对话框。然后ViewModel在指定文件路径后初始化Runtime:

void ExecuteOpenCommand()
{
    var path = this.openFileService.OpenFile();
    if (!string.IsNullOrEmpty(path))
    {
        var model = ViewModelLoader.ReadMainModel(path);
        var viewModel = ViewModelLoader.LoadViewModel(model);
        this.MainViewModel = viewModel;
        this.MainViewModel.NuiService = this.nuiService;
        this.nuiService.Initialize();
    }
}

nuiService只构造运行时,如果它以前从未被初始化:

bool initialized;
public void Initialize()
{
    if (initialized)
    {
        return;
    }
    try
    {
        this.runtime = new Runtime();
    }
    catch (FileNotFoundException ex)
    {
        Trace.WriteLine(ex.ToString());
    }
    // ...
    initialized = true;
}

然而,当我从头开始一个新的 WPF项目并构建运行时,我做得到这个错误:

// does not throw exception
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    Runtime r = new Runtime();
    r.Initialize(RuntimeOptions.UseSkeletalTracking);
    r.Uninitialize();
}

当谷歌搜索这个例外时,我遇到了需要更新DirectX,重启,更新Windows或重新安装INuiInstanceHelper到GAC的解决方案。我看不出这些解决方案会有什么帮助,因为我可以用另一种方式构建运行时而不会出错。我认为我的问题必须与它是用户发起(例如,从一个按钮点击),但当我移动到运行时构造函数的方法得到执行附近的应用程序启动(例如,在我的ViewModel这是通过数据绑定实例化声明),我仍然有问题。想法吗?

在Kinect SDK中加载INuiInstanceHelper不一致的问题

答案是将平台目标更改为x86。出于某种原因,它被设置为任意CPU。grrrr…