2012-01-08 13 views
9

Descargado una clase de clase de recopilación de árbol de intervalo C# desde aquí http://intervaltree.codeplex.com/SourceControl/list/changesets -> Lado derecho -> Descargar.C# usando otros código

Sin embargo, no se puede abrir todo el proyecto en mi Microsoft Visual C# 2010 Express (que también dirige C# XNA) porque

carpetas solución no son compatibles con esta versión de la aplicación

También solo quiero que la clase se use por separado en mi propio proyecto seprate.

He intentado copiar los tres archivos importantes aparentes Interval.cs, IntervalNode.cs y IntervalTree.cs en mi proyecto, pero esto genera el error de compilación

No hay importadores que manejan este tipo de archivo

I' También intenté copiar y pegar los contenidos de los tres archivos en mi proyecto, encapsulándolos en su propio espacio de nombres, así como también había mucho código. Tenía que rearange algunos de los usings un poco, pero se han encontrado con el problema de que, posiblemente, se quiere PowerCollections archivos .dll y .pcb como using Wintellect.PowerCollections; provoca

El tipo o espacio de nombres 'Wintellect' no se pudo encontrar (ARE ¿falta una directiva de uso o una referencia de ensamblado?)

No estoy seguro de cómo continuar o si estoy haciendo lo correcto en absoluto para lograr que esta clase funcione.

+0

simplemente comprueba si tienes ese dll en la lista de referencias y si está presente en el pasado alistado allí. ya que dijiste que estás usando studio express, no estoy seguro de que tengas el marco de prueba que usaron. No tuve problemas con el uso de esta configuración, excepto que dentro del código, algunas afirmaciones fallaron. mientras que dos afirmaciones sobre el tiempo de compilación dependen de lo que su sistema está haciendo en ese momento, hay una afirmación que obtiene las intersecciones que deben modificarse para hacer referencia al recuento de la primera matriz. – King

+0

crea un proyecto (un proyecto de biblioteca de clases) y agrega la referencia a ese [dll] (http: //powercollections.codeplex.com/releases/view/6863) dependiendo de la plataforma en la que va a construir (x86/x64) y compilarla. – King

+1

Esto no es realmente una pregunta de código. – ja72

Respuesta

13

Añadir la biblioteca para su solución

Copiar el directorio en el directorio de IntervalTreeLib solución . A continuación, haga clic con el botón derecho en su solución y agregue el proyecto existente. Apúntalo en IntervalTreeLib.csproj en IntervalTreeLib y haz clic en Abrir. Eso debería agregar el proyecto IntervalTreeLib a su solución.

Add Existing Project Screenshot

Añadir una referencia a la biblioteca en su proyecto

Luego, en su proyecto, agregue una referencia a la proejct IntervalTreeLib: - hacer clic derecho en la carpeta Referencias y Agregar Referencia. Haga clic en la pestaña Proyectos y seleccione IntervalTreeLib.

Add Reference Screenshot

Select Project Reference Screenshot

utilizar las clases en su código

Para utilizar las clases de la biblioteca en el origen de entonces, tendrá que agregar:

using IntervalTreeLib; 

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

O bien, consúltelos por su nombre completo:

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

Gracias, se ve bien hasta ahora, muy prometedor. Tengo "El tipo o el nombre del espacio de nombres 'IntervalTree' no se pudo encontrar (¿falta una directiva using o una referencia de ensamblado?" Cuando intento usar "IntervalTree intervals = new IntervalTree();". The "IntervalTreeLib" namespace seem igualmente falta. – alan2here

+0

Edited my answer para incluir esa información. –

+0

No se encontró el tipo o el nombre del espacio de nombres 'IntervalTreeLib' (¿falta una directiva using o una referencia de ensamblado?) – alan2here

4

Abrir el archivo IntervalTreeLib.csproj si quieren ser capaces de abrir el proyecto en su totalidad (o en su solución actual añadir un proyecto existente (se puede hacer clic derecho sobre la solución) y seleccione el IntervalTreeLib.csproj) . Si está tratando de obtener solo el archivo de código en su proyecto, asegúrese también de tomar el archivo PowerCollections.dll (veo que está en la misma carpeta que los archivos de código) o su código no se compilará (como ha descubierto). Tendrá que agregar una referencia e incluir la declaración de uso necesaria en la parte superior de los archivos de código que hace uso de esta biblioteca (o use un nombre completamente calificado con el espacio de nombres).

using IntervalTreeLib; 

o

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

Además, asegúrese de leer el archivo license.txt. Es posible que deba incluirlo si está usando el código. Dar crédito donde es debido.

ACTUALIZACIÓN:

Si el proyecto de prueba que está causando problemas, sólo abra el proyecto de biblioteca. Idealmente, podría abrirlo y compilarlo, agregando los archivos DLL de salida que se generan directamente en su solución. Esto es ideal a menos que planee cambiar el código fuente de la biblioteca.

+0

Cuando traté de abrir el archivo csproj, siguió adelante y abrió el archivo .sln de todos modos. Y eso causará con problemas de OP. –

+0

@JonathonReinhart: Bueno, mejor para él hacerlo de la segunda manera de agregar una solución existente, supongo. No puedo probarlo aquí mismo (en mi caja de Linux esta mañana). –

+0

La configuración en sí funcionaba como debería. pero como está usando una versión diferente del estudio, no puede abrirlo tal como está. Pero puede agregar todo y luego debería haber hecho referencia al DLL correctamente. Solo ver la lista de referencias y la ruta del dll debería hacerlo. – King

0

Como comenta que puede compilar Intervallib.dll, discutiremos acerca de cómo debe utilizar el dll en su proyecto.

Ahora en su proyecto, haga clic derecho en la parte de referencias y agregue el dll intervalllib.dll a sus referencias. En su archivo game.cs, haga referencia al espacio de nombres como - using IntervalTreeLib;

, entonces debería copiar el dll powercollections.dll también en el directorio bin del directorio proj.

debe copiar este archivo DLL porque hay una relación indirecta con el DLL ya que se utiliza en IntervalTreeLib.dll

siguiendo estos pasos, yo era capaz de ejecutar este proyecto.

Cuestiones relacionadas