C# 如何使用同一命名空间的两个不同版本(即 Kinect 1.8 和 Kinect 2.0)

本文关键字:Kinect 版本 何使用 命名空间 两个 | 更新日期: 2023-09-27 18:32:19

在C#中,我想在同一项目中引用Microsoft.Kinect(v1.8)Microsoft.Kinect(v2.0)。它们是不同的 DLL,但使用相同的命名空间。我能够通过 .csproj 文件中的重命名黑客来引用它们(分别将它们称为"Microsoft.Kinectv1"和"Microsoft.Kinectv2"。

但是,问题仍然存在,如何在代码中专门引用一个或另一个,因为它们都具有相同的命名空间。Visual Studio 注意到 some 类在两个集合(v1.8 和 v2.0)中使用,但我不知道如何在代码中指定一个版本或另一个版本。我已经阅读了几篇关于此的帖子,但没有一篇专门展示如何解决此问题。这将如何完成?

C# 如何使用同一命名空间的两个不同版本(即 Kinect 1.8 和 Kinect 2.0)

  1. 在属性窗口中为每个程序集指定不同的别名(假设您将它们命名为:assem01 和 assem02);

  2. 在要使用相同的命名空间的文件顶部写入:

    外部别名 ASEM01;

    外部别名 ASEM02;

注意:这些行必须写在文件中的任何其他代码之前。

  1. 现在,您可以从两个程序集访问相同的命名空间,例如:

    var c1 = new assem01::ns1.ns2.myClass();

    var c2 = new assem02::ns1.ns2.myClass();

  2. 方便起见,您可能还希望为命名空间提供一些别名,例如:

    使用 assem01_ns2 = assem01::ns1.ns2;

    使用 assem02_ns2 = assem01::ns1.ns2;

    var c1 = new assem01_ns2.myClass();

    var c2 = new assem02_ns2.myClass();

希望这是有帮助的。