2009-07-31 17 views
73

Al agregar una referencia a un ensamblaje ubicado dentro del directorio de la solución, ¿hay alguna forma de agregarlo relativamente, de modo que cuando se ingrese y salga de un repositorio se haga referencia en los proyectos correctamente?Visual Studio: Ensamblado Relativo Referencias Trayectos

+11

Si no funciona desde la IU, recuerde que puede simplemente editar a mano el archivo .proj directamente y cambiar la ruta de acceso a relativa. Una vez que lo cambie de cualquier forma, se mantendrá de la manera en que lo haya puesto. –

+1

En Visual Studio 2010, las rutas de referencia se almacenan como relativas de manera predeterminada, por lo tanto, si esto le sucede a usted, algo más está mal. En mi caso, era como si hubiera ignorado las dlls ignoradas por el control de versiones para poder compilar la solución pero mis compañeros de trabajo no podían. –

Respuesta

101

Para ampliar el comentario original de Pavel Minaev: la GUI para Visual Studio admite referencias relativas con la suposición de que su .sln es la raíz de la referencia relativa. Por lo tanto, si tiene una solución C:\myProj\myProj.sln, las referencias que agregue en las subcarpetas de C:\myProj\ se agregan automáticamente como referencias relativas.

Para añadir una referencia relativa en un directorio independiente, como C:/myReferences/myDLL.dll, haga lo siguiente:

  1. agregar la referencia en Studio interfaz gráfica de usuario de Visual haciendo clic derecho en el proyecto en el Explorador de soluciones y seleccionando Agregar referencia. ..
  2. Encuentra la .csproj * donde existe esta referencia y abrirlo en un editor de texto
  3. Editar la < HintPath> a ser igual a

    <HintPath>..\..\myReferences\myDLL.dll</HintPath>

Hace referencia a estos C:\myReferences\myDLL.dll ahora.

Espero que esto ayude.

+10

Entiendo que esto es útil y correcto, pero ¿la GUI de VS * en serio * no proporciona una forma de agregar una referencia relativa? – kdbanman

+3

En VS 2015 obtuve este comportamiento por defecto (ruta relativa) – Mugen

+1

Estaba convencido de que había agregado una ruta absoluta, hasta que seguí sus instrucciones por curiosidad. VS mostró una ruta absoluta en las propiedades de referencia, pero mostró que ya era relativa. ¡Resulta que me faltaban los archivos O_o lolimaderp! – donutguy640

7

Sí, solo cree un directorio en su solución como lib /, y luego agregue su dll a ese directorio en el sistema de archivos y agréguelo al proyecto (Agregar-> Objeto existente-> etc.). A continuación, agregue la referencia según su proyecto.

He hecho esto varias veces bajo svn y bajo cvs.

+4

No necesita agregar el dll al proyecto en sí mismo, simplemente agregue referencia al mismo. Lo mejor que puede hacer es agregar todo el directorio 'lib' a su control de origen. Consulte http://code.google.com/p/projectpilot/source/browse/#svn/trunk como un ejemplo –

+1

Tiene razón. Revisé un proyecto anterior y ni el directorio ni los dlls se agregaron al proyecto en sí, solo al repositorio. Y la referencia es entonces relativa al proyecto. Lo siento por eso. – Freddy

2

Probablemente, la manera más fácil de lograr esto es simplemente agregar la referencia al ensamblaje y luego (manualmente) aplicar un parche a la representación textual de la referencia en el archivo de proyecto de Visual Studio correspondiente (extensión .csproj) de modo que se vuelva relativo .

Lo he hecho muchas veces en VS 2005 sin ningún problema.

+3

Creo que no es necesario modificar el archivo de proyecto manualmente. En mi experiencia, Visual Studio siempre usa pathes relativos. La única vez que tuve que modificar el archivo del proyecto a mano fue cuando quería compartir un archivo de clave (.snk). Visual Studio siempre copia el archivo de clave en el directorio del proyecto, lo que da como resultado varias copias del archivo de clave. –

0

Como se mencionó anteriormente, puede editar manualmente el archivo .csproj de su proyecto para aplicarlo manualmente.

También noté que Visual Studio 2013 intenta aplicar una ruta relativa al hintpath de referencia, probablemente debido a un intento de hacer que el archivo del proyecto sea más portátil.

Cuestiones relacionadas