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

时间:2011-07-11 19:42:26

标签: c# kinect

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

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

我在 中在一个简单的场景中构建运行时(例如,WPF中的Loaded事件)时会出现此错误。请参阅下面的简单场景代码。

在我的实际场景中,当用户从打开的文件对话框打开文件时,会调用我的Runtime的ctor。这是从ViewModel中的MenuItem命令开始的,该命令使用包装打开文件对话框的“服务”。然后,ViewModel在指定文件路径后初始化运行时:

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项目时,我 not 得到此错误:

// 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的解决方案。我没有看到这些解决方案将如何帮助,因为我可以以不同的方式构造运行时没有错误。我认为我的问题必须与用户启动(例如从Button Click)有关,但当我将Runtime构造函数移动到在app启动附近执行的方法时(例如在我的ViewModel的ctor中实例化)通过数据绑定声明我仍然有问题。想法?

1 个答案:

答案 0 :(得分:2)

答案是将平台目标更改为x86。由于某种原因,它被设置为任何CPU。 GRRRR ....