С# с использованием другого кода

Iv'e загрузил класс класса коллекции деревьев интервала С# отсюда http://intervaltree.codeplex.com/SourceControl/list/changesets → Правая сторона → Загрузить.

Однако я не могу открыть весь проект на своем Microsoft Visual С# 2010 Express (который также запускает С# XNA), потому что

Папки решений не поддерживаются в этой версии приложения

Также я хочу, чтобы класс использовался отдельно в моем собственном проекте seprate.

Я попытался скопировать три важных кажущихся файла Interval.cs, IntervalNode.cs и IntervalTree.cs в мой проект, но это сгенерировало ошибку компиляции

Нет импортеров, которые обрабатывают этот тип файла

Я также попытался скопировать и вставить содержимое трех файлов в свой проект, инкапсулируя их в собственное пространство имен, а также было много кода. Мне пришлось немного изменить некоторые из них, но столкнулся с проблемой, что, возможно, он хочет, чтобы файлы PowerCollections.dll и .pcb как using Wintellect.PowerCollections; вызывали

Невозможно найти имя типа или пространства имен 'Wintellect' (вам не хватает директивы using или ссылки на сборку?)

Я не уверен, как продолжить или если я вообще делаю правильно, как заставить этот класс работать.

Ответ 1

Добавить библиотеку в ваше решение

Скопируйте каталог IntervalTreeLib в каталог решений. Затем щелкните правой кнопкой мыши свое решение и добавьте существующий проект. Наведите указатель на IntervalTreeLib.csproj в IntervalTreeLib и нажмите "Открыть". Это должно добавить проект IntervalTreeLib к вашему решению.

Add Existing Project Screenshot

Добавить ссылку на библиотеку в вашем проекте

Затем в вашем проекте добавьте ссылку на IntervalTreeLib proejct:  - Щелкните правой кнопкой мыши папку "Ссылки" и "Добавить ссылку". Перейдите на вкладку "Проекты" и выберите "IntervalTreeLib".

Add Reference Screenshot

Select Project Reference Screenshot

Используйте классы в коде

Чтобы использовать классы из библиотеки в вашем источнике, вам нужно либо добавить:

using IntervalTreeLib;

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

Или, обратитесь к ним по их полному имени:

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

Ответ 2

Откройте файл IntervalTreeLib.csproj, если вы хотите полностью открыть проект (или в текущем решении добавить существующий проект (вы можете щелкнуть правой кнопкой мыши по решению) и выбрать IntervalTreeLib.csproj). Если вы пытаетесь захватить только файл кода в своем проекте, убедитесь, что вы также захватили файл PowerCollections.dll (я вижу, что он находится в той же папке, что и файлы кода), или ваш код не будет компилироваться (как вы обнаружили). Вам нужно будет добавить ссылку на него и включить требуемый оператор using в верхней части файлов кода, используя эту библиотеку (или использовать полное имя с пространством имен).

using IntervalTreeLib;

или

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

Кроме того, убедитесь, что вы прочитали файл license.txt. Возможно, вам придется включить его, если вы используете код. Дайте кредит там, где это должно быть.

UPDATE:

Если тестовый проект вызывает проблемы, просто откройте проект библиотеки. В идеале вы можете просто открыть это и скомпилировать его, добавив выходные DLL файлы, которые генерируются непосредственно в ваше решение. Это идеально, если вы не планируете менять исходный код библиотеки.

Ответ 3

После обсуждения того, что вы можете создать Intervallib.dll, мы обсудим, как вы должны использовать DLL в своем проекте.

Теперь в вашем проекте щелкните правой кнопкой мыши на ссылке и добавьте dll intervallib.dll в свои ссылки. В файле game.cs укажите ссылку на пространство имен как - using IntervalTreeLib;

тогда вы должны скопировать dll powercollections.dll в каталог bin каталога proj.

вы должны скопировать эту DLL, потому что есть косвенная ссылка на dll, поскольку она используется в IntervalTreeLib.dll

после этих шагов я смог выполнить этот проект.