2011-03-13 19 views
10

He compilado mi proyecto y algunos de los archivos .dlls agregados de mi proyecto tienen referencias absolutas. Cuando trato de ejecutar mi proyecto en otra máquina, busca los .dlls de la ruta del proyecto original.Cambiando referencias de C# .dll de absoluto a relativo

¿Cómo puedo hacer que el proyecto busque los archivos .dlls utilizando una ruta relativa?

+0

yo sepa, cuando se especifica una ruta absoluta a la DLL, que se traduce a una ruta relativa en el archivo del proyecto, por lo que en otras máquinas se usa la ruta relativa ... –

+0

Evite hacer referencia a los ensamblados que están almacenados en otra unidad. –

Respuesta

16

Edite el archivo .csproj y cambie los elementos <HintPath> de rutas absolutas a rutas relativas.

+1

Cuando estaba agregando referencias a DLL, noté que usaba automáticamente rutas relativas. ¿En qué casos Visual Studio ha utilizado rutas absolutas? –

+7

Utiliza rutas absolutas cuando el ensamblado al que hace referencia está por encima de la raíz del proyecto. – Loophole

4

También puede escribir su controlador para resolver ensamblajes. En la forma más simple que puede tener este aspecto:

AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveHandler; 
.. 
static Assembly AssemblyResolveHandler(object sender, ResolveEventArgs args) 
{ 
    string assemblyPath = "yourpath"; 
    return Assembly.LoadFrom(assemblyPath + args.Name); 
} 

Otra opción es añadir la entrada en App.config:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="yourpath"/> 
    </assemblyBinding> 
    </runtime> 
Cuestiones relacionadas