El proyecto tiene varias DLL´S, y de vez en cuando le añadimos alguna mas.
El tema es que para que funcione bien, las dll´s al compilar la aplicacion,
las mete en el mismo directorio donde se genera el .exe, y ya hay un lio de
dll´s que no me hacen mucha gracia.
Existe la manera de decirle al visual de alguna manera que al generar la
solucion meta esas dll´s en un directorio por ejemplo que se llame Library, o
lo que sea??
Un saludo y muchas gracias.
De forma predeterminada, en tiempo de ejecución las DLLs se buscan en el
GAC, en el directorio del .EXE, y en un subdirectorio que se llame igual que
la DLL pero sin la extensión ".dll". Si no te gusta ninguna de estas
opciones, puedes crear un subdirectorio que se llame como quieras, y cambiar
el .config de la aplicación para que contenga un nodo <probing
privatePath="..." />, indicando el nombre del directorio deseado. (Nota:
solo funciona si es un subdirectorio por debajo del .exe; no puedes usar el
"probing" para "subir" hacia un directorio superior).
<?xml version="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com.asm.v1">
<probing privatePath="subdirectorio" />
</assemblyBinding>
</runtime>
</configuration>
Para mover las DLLs a ese subdirectorio, tendrás que hacerlo a mano. El
Visual Studio se puede configurar para decirle que no quieres que las copie
automáticamente al directorio del ejecutable, pero no tiene nada para
decirle que las copie a otro directorio específico, así que este paso
tendrás que hacerlo a mano (o crear un "script" que lo haga y añadírselo al
proceso de compilación).
Veras, he estado probando lo que me comentaste, y en principio me gustaría
utilizar la solucion que me comentabas modificando el .config de la
aplicación.
He estado haciendo pruebas pero no me ha funcionado.
Te comento, mi aplicación es una aplicación winforms, la cual no tenia
archivo de configuración, al crearlo me ha creado el siguiente XML:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sources>
<!-- En esta sección se define la configuración del registro
para My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Quite los comentarios de la sección posterior para
escribir en el registro de eventos de la aplicación -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"/>
<!-- Quite los comentarios de la sección posterior y reemplace
APPLICATION_NAME con el nombre de su aplicación para escribir en el registro
de sucesos de la aplicación -->
<!--<add name="EventLog"
type="System.Diagnostics.EventLogTraceListener"
initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
</configuration>
Si lo edito le introduzco el codigo que me has comentado, no me funciona.
Agradecería tu ayuda, de todas maneras muchas gracias por la molestia.
"Alberto Poblacion" wrote:
> .
>
¿Dónde metes el código? Hay que hacer una configuración correcta en XML,
metiendo la sección <runtime> por debajo de <configuration> pero por fuera
de <system.diagnostics>. ¿Puedes copiar el archivo tal como te ha quedado al
final? ¿Cómo lo has creado? ¿Has añadido un app.config al proyecto en Visual
Studio? ¿Has usado la herramienta de configuración desde el panel de
control? ¿Qué significa que "no me funciona", te da un error (cuál) o no
dice nada y símplemente no busca las DLLs en el directorio indicado?
Te comento,
El fichero de configuracion lo he añadido desde las propiedades del
proyecto, boton derecho sobre el proyecto, propiedades, congfiguracion, y las
lineas que me comentaste las he metido editando el fichero de configuracion
con el bloc de notas y me ha quedado asi ( creo que de hay viene el problema,
pero es que desde esa pestaña no se como hacerlo)
El XML que me ha quedado es el siguiente:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com.asm.v1">
<probing privatePath="DLLS" />
</assemblyBinding>
</runtime>
</configuration>
<?xml version="1.0"?>
Y la aplicacion ni siquiera arranca.
Muchas gracias por todo.
"Alberto Poblacion" wrote:
> .
>