C # используя чужой код - PullRequest
       33

C # используя чужой код

9 голосов
/ 08 января 2012

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

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

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

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

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

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

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

Не удалось найти тип или имя пространства имен «Wintellect» (отсутствует директива using или ссылка на сборку?)

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

Ответы [ 3 ]

13 голосов
/ 08 января 2012

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

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

Add Existing Project Screenshot

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

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

Add Reference Screenshot

Select Project Reference Screenshot

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

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

using IntervalTreeLib;

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

, либо ссылаться на них по их полному имени:

IntervalTreeLib.IntervalTree<int, int> tree = new ...
4 голосов
/ 08 января 2012

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

using IntervalTreeLib;

или

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

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

ОБНОВЛЕНИЕ:

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

0 голосов
/ 08 января 2012

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

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

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

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

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

...