C#使用他人的代码

10

我从这里http://intervaltree.codeplex.com/SourceControl/list/changesets下载了一个C#区间树集合类,但我无法在我的Microsoft Visual C# 2010 Express(也运行C# XNA)中打开整个项目,因为该应用程序版本不支持解决方案文件夹。我只需要这个类单独使用在我的项目中。我尝试将三个重要的文件Interval.cs, IntervalNode.csIntervalTree.cs复制到我的项目中,但这生成编译错误:“没有处理此文件类型的导入程序”。我还尝试将三个文件的内容复制粘贴到我的项目中,并将它们封装到自己的命名空间中,因为代码很多。我不确定如何继续或者我是否在正确地操作以使该类起作用。可能需要PowerCollections.dll和.pcb文件。


只需检查您的引用列表中是否有该dll,并且它是否存在于过去列出的内容中。由于您说您正在使用studio express,我不确定您是否拥有他们使用的测试框架。除了代码内部出现几个断言失败之外,我在使用此设置时没有任何问题。虽然构建时间上的两个断言取决于您的系统在执行什么操作,但有一个断言获取交集必须更改为引用第一个数组的计数。 - King
创建一个项目(类库项目)并根据您将要构建的平台(x86/x64)添加对该dll的引用,然后进行构建。 - King
1
这并不是一个真正的代码问题。 - John Alexiou
3
在其他地方,OP真的能得到正确的答案吗? - Jonathon Reinhart
2
根据常见问题解答,关于“程序员常用的软件工具”的问题适合在StackOverflow上提问。@ja72 - phoog
4个回答

14

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

将IntervalTreeLib目录复制到您的解决方案目录中。然后,右键单击您的解决方案,选择“添加现有项目”。将其指向IntervalTreeLib中的IntervalTreeLib.csproj,然后点击打开。这样就会将IntervalTreeLib项目添加到您的解决方案中。

添加现有项目截图

在您的项目中添加对库的引用

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

添加引用截图

选择项目引用截图

在您的代码中使用类

要在您的源代码中使用库中的类,则需要添加以下内容:

using IntervalTreeLib;

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

或者,用它们的全名引用:

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

找不到类型或命名空间名称 'IntervalTreeLib' (您是否缺少使用指令或程序集引用?) - alan2here
你成功地将引用添加到那个项目了吗?IntervalTreeLib文件没有修改吗? - Jonathon Reinhart
我执行了“添加->现有项目”,然后在解决方案资源管理器中出现了一个名为IntervalTreeLib的新项目,其中包含三个.cs文件。 - alan2here
抱歉,这并不像可能那么简单,但是你的答案很好。我认为在遵循你的答案后,现在它正在工作。 - alan2here
太棒了:¬)现在有图片的答案更好了。我打赌很多人都有这个问题。我希望我能给你超过一个赞。 - alan2here
显示剩余5条评论

4

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

using IntervalTreeLib;

或者

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

此外,请确保您已阅读license.txt文件。如果您正在使用该代码,则可能需要将其包含在内。恰当地给予信用。

更新:

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


安装本身正常运行,但由于他使用不同版本的工作室,因此无法像原样打开。但是他可以添加所有内容,然后应该正确引用dll。只需查看引用列表和dll路径即可完成。 - King
@King:理论上他应该能够放弃测试项目并打开库项目。这不使用解决方案文件,也不包括他可能无法加载的测试代码。如果他正在使用VS 2010,并且该项目是在较旧版本的VS中编写的,则应该能够通过转换向导升级该项目。假设转换向导包含在Express版中(我不确定它是否仅适用于$$版本)。 - Jason Down
你能够构建这个库,但是不能在你的项目中使用它。这是你的问题吗? - King
@King,如果他在自己的解决方案中简单地引用了项目,他甚至不需要将其指向DLL,VS会为他处理。 - Jonathon Reinhart
使用失败,因为它无法看到现有的命名空间“IntervalTreeLib”。 - alan2here
显示剩余9条评论

3
将库添加到您想要使用它的项目的引用中。
在下图所示的对话框中,单击“浏览”按钮并选择包含该库的文件。然后单击“确定”按钮。

enter image description here


0

既然讨论了如何构建Intervallib.dll,我们现在来讨论一下如何在项目中使用该dll。

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

然后,您应该将dll powercollections.dll实际复制到proj目录的bin目录中。

您应该复制此dll,因为它在IntervalTreeLib.dll中被使用,存在间接链接。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接