【问题标题】:How to Import Other Namespaces into Visual C#?如何将其他命名空间导入 Visual C#?
【发布时间】:2012-02-17 23:11:16
【问题描述】:

很抱歉,如果我的问题看起来有点无聊,但我找不到答案。我想在我的 XNA 游戏中使用 DirectInput。我已经阅读过,似乎这是从 Xbox 360 控制器以外的游戏手柄获取输入的最佳方式。第一步是包含 Microsoft.DirectX.DirectInput 命名空间,但我不太清楚如何。简单地把它放在我上课的开头是行不通的,Visual C# 无法识别它。

这让我想到我应该下载 DirectX SDK 吗?里面有很多东西,而且文件很大,我该如何下载单个命名空间?这甚至可能吗?如果我可以下载单个命名空间,我应该把文件放在哪里?

现在您可以看到所有问题在我脑海中盘旋。那么如何让 Visual C# 识别 Microsoft.DirectX.DirectInput 命名空间,以便我可以使用方法、属性和所有这些好东西?

谢谢!

【问题讨论】:

  • 您还可以考虑使用 SlimDX 为 DirectInput 提供一个很好的托管包装器。

标签: c# namespaces xna directx directinput


【解决方案1】:

您需要设置对包含您要使用的代码库的 DLL 的引用。大概这是 SDK 的一部分,所以是的,您应该下载它。然后,在 Visual Studio 中

  • 打开解决方案资源管理器
  • 打开要使用库的项目
  • 右键单击该项目的引用节点
  • 选择“添加参考”
  • 导航并选择 dll

成功添加引用后,VS 应该识别 using 指令(以及您从程序集中使用的任何类型)。

请注意,对组件的引用;程序集与 命名空间 不同。初学者经常混淆这两者。在不同程序集中定义的类型可以在同一个命名空间中; BCL 有很多这样的例子。

此外,“using”指令不会导致加载任何内容或类似的内容;它只允许您指定类型而不完全限定名称。事实上,不用using 指令就可以用C# 编写代码。例如下面的代码文件是等价的:

using System.Collections.Generic;
public static class Collector
{
    public static ICollection<T> Collect(IEnumerable<T> enumerable)
    {
        return new List<T>(enumerable);
    }
}

public static class Collector
{
    public static System.Collections.Generic.ICollection<T> Collect(System.Collections.Generic.IEnumerable<T> enumerable)
    {
        return new System.Collections.Generic.List<T>(enumerable);
    }
}

【讨论】:

  • 我已经安装了 SDK,当我按照这些步骤操作时,会弹出一条消息“无法添加对“....dll”的引用。请确保该文件是可访问的并且它是一个有效的程序集或 COM 组件。”你知道我该如何解决这个问题吗?我知道这是可能的,因为这个人做到了。查看他的代码中的第二行。 stackoverflow.com/questions/5604492/…
【解决方案2】:

下载 SDK。它不会与您的应用程序一起重新分发。但是您开发 DirectX 应用程序所需的一切都将包含在其中。安装后,“添加引用”对话框中会出现新条目。

【讨论】:

    【解决方案3】:

    为了利用 DirectX,您需要下载 SDK。

    根本无法下载其中的一部分。即使是这样,我也不建议这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      相关资源
      最近更新 更多