【问题标题】:C# using others codeC# 使用其他代码
【发布时间】:2012-01-08 15:21:14
【问题描述】:

我从这里http://intervaltree.codeplex.com/SourceControl/list/changesets 下载了一个 C# 区间树集合类类 -> 右侧 -> 下载。

但是我无法在我的 Microsoft Visual C# 2010 Express(也运行 C# XNA)上打开整个项目,因为

此版本的应用程序不支持解决方案文件夹

另外,我只是希望该类在我自己的单独项目中单独使用。

我试图将三个重要的看似文件 Interval.csIntervalNode.csIntervalTree.cs 复制到我的项目中,但这会产生编译错误

没有处理这种文件类型的导入器

我还尝试将这三个文件的内容复制并粘贴到我的项目中,将它们封装到自己的命名空间中,并且有很多代码。我不得不重新安排一些使用,但遇到了可能需要 PowerCollections .dll 和 .pcb 文件作为using Wintellect.PowerCollections; 原因的问题

找不到类型或命名空间名称“Wintellect”(您是否缺少 using 指令或程序集引用?)

我不知道如何继续,或者我在如何让这门课正常工作方面做得是否正确。

【问题讨论】:

  • 只需检查您是否在参考列表中拥有该 dll,以及它是否在过去被列入其中。既然您说您使用的是 studio express,我不确定您是否会拥有他们使用的测试框架。除了在代码内部,我使用这个设置没有任何问题,一些断言失败了。虽然构建时间的两个断言取决于您的系统当时正在做什么,但有一个断言获取必须更改以引用第一个数组的计数的交叉点。
  • 创建一个项目(一个类库项目)并添加对 dll 的引用,具体取决于您要构建的平台(x86/x64)并构建它。
  • 这不是一个真正的代码问题。
  • 但是 OP 真的会在其他任何地方得到正确答案吗?
  • @ja72 根据faq,关于“程序员常用的软件工具”的问题适合stackoverflow。

标签: c# class interval-tree


【解决方案1】:

将库添加到您的解决方案中

将 IntervalTreeLib 目录复制到您的 solution 目录中。然后,右键单击您的解决方案,并添加现有项目。将其指向 IntervalTreeLib 中的IntervalTreeLib.csproj,然后单击打开。这应该将 IntervalTreeLib 项目添加到您的解决方案中。

你的项目中添加对库的引用

然后,在您的项目中,添加对 IntervalTreeLib 项目的引用: - 右键单击​​引用文件夹,然后添加引用。单击 Projects 选项卡,然后选择 IntervalTreeLib。

在代码中使用类

要在源代码中使用库中的类,您需要添加:

using IntervalTreeLib;

void Foo() {
    IntervalTree<int, int> tree = new ...
}

或者,用他们的全名来称呼他们:

IntervalTreeLib.IntervalTree<int, int> tree = new ...

【讨论】:

  • 谢谢,目前看起来还不错,很有希望。当我尝试使用“IntervalTree 间隔 = new IntervalTree();”时,我得到“找不到类型或命名空间名称 'IntervalTree'(您是否缺少 using 指令或程序集引用?”。“IntervalTreeLib”命名空间似乎同样缺失。
  • 找不到类型或命名空间名称“IntervalTreeLib”(您是否缺少 using 指令或程序集引用?)
  • 您是否成功添加了对该项目的引用? IntervalTreeLib 文件是否未修改?
  • 我做了“添加 -> 现有项目”,三个 .cs 文件出现在解决方案资源管理器中名为 IntervalTreeLib 的新项目中。
  • 我刚刚完成了上面的过程,一切似乎都可以正常工作(当然这是 VS2010,不是 express,但它应该对你也一样。)
【解决方案2】:

如果您希望能够完整地打开项目,请打开 IntervalTreeLib.csproj 文件(或在您当前的解决方案中添加现有项目(您可以右键单击解决方案)并选择 @987654323 @)。如果您尝试仅获取项目中的代码文件,请确保您还获取了 PowerCollections.dll 文件(我看到它与代码文件位于同一文件夹中),否则您的代码将无法编译(正如您所发现的那样)。您需要添加对它的引用,并在使用此库的代码文件顶部包含所需的 using 语句(或使用名称空间的完全限定名称)。

using IntervalTreeLib;

var myObj = new IntervalTreeLib.[WhateverClass](...);

另外,确保您阅读了 license.txt 文件。如果您使用代码,则可能需要包含它。给予应得的荣誉。

更新:

如果测试项目给您带来问题,只需打开库项目。理想情况下,您可以打开并编译它,将直接生成的输出 DLL 文件添加到您的解决方案中。除非您打算更改库源代码本身,否则这是理想的选择。

【讨论】:

  • 当我试图打开 csproj 文件时,它还是继续打开了 .sln 文件。这将导致 OP 问题。
  • @JonathonReinhart:好吧,我猜他最好采用第二种添加现有解决方案的方法。自己无法在这里测试(今天早上在我的 Linux 机器上)。
  • 设置本身正常工作。但由于他使用的是不同版本的工作室,他无法按原样打开它。但是他可以添加所有内容,然后他应该正确引用 dll。只需查看引用列表和 dll 的路径即可。
  • @King:理论上他应该可以放弃测试项目,打开库项目。这不是使用解决方案文件,也不包括他可能无法加载的测试代码。如果他使用的是 VS 2010 并且项目是用旧版本的 VS 编写的,那么他应该可以通过转换向导升级项目。那是假设转换向导包含在快速版中(我不确定它是否仅在 $$ 版本中可用)。
  • 这就是他的问题所在。解决方案项目在vs2010专业版或终极版。虽然 Visual Studio 具有升级功能,但它也不允许采用其他方式,这也是非常有意义的。他应该自己创建一个项目(一个类库项目)并根据他要构建的平台(x86/x64)添加对dll的引用并构建它。它很有魅力。它唯一的必须是添加引用的问题。
【解决方案3】:

将该库添加到您要使用的项目的引用中。

【讨论】:

    【解决方案4】:

    既然讨论了您能够构建 Intervallib.dll,我们将讨论您应该如何在项目中使用 dll。

    现在在您的项目中,右键单击引用部分并将 dll intervallib.dll 添加到您的引用中。在您的 game.cs 文件中,对命名空间的引用为 -- using IntervalTreeLib;

    那么您实际上也应该将 dll powercollections.dll 复制到 proj 目录的 bin 目录中。

    您应该复制此 dll,因为在 IntervalTreeLib.dll 中使用了该 dll 的间接链接

    按照这些步骤,我能够执行这个项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 2012-05-23
      • 2017-01-21
      • 1970-01-01
      相关资源
      最近更新 更多