Pregunta

Tengo un proyecto que está almacenado en un repositorio de Subversion.

En este repositorio, en una carpeta diferente, tengo un conjunto de bibliotecas que uso en muchos de mis proyectos. Estas bibliotecas se almacenan como archivos binarios, es decir. los dll's, pdb's, y xml's.

Aquí hay un ejemplo de diseño:

<repo-url>
    \Libraries
        \SQLite
        \SystemHooks
        \Moq

En el proyecto de aplicación, agrego un " libs " directorio, luego agregue una propiedad de referencia svn: externals a ese directorio para obtener las bibliotecas que necesito.

Por ejemplo, para este proyecto en el que estoy trabajando ahora, que provocó esta pregunta, necesito la biblioteca SystemHooks, por lo que en la estructura de carpetas de proyectos de mi aplicación, ahora se ve así:

SketchingMode         <-- solution folder, other projects here as well
    SketchingMode     <-- app project folder
        libs
            SystemHooks

Lo bueno de esto es que puedo actualizar más fácilmente las bibliotecas y simplemente usar el especificador -rXYZ para la definición externa para evitar obtener versiones más nuevas de las que estoy listo para aceptar, y todavía tengo solo una copia de cada archivo / versión en mi repositorio.

Lo malo, en este caso particular, es que una de las dll en el directorio SystemHooks (2 si también quiero el pdb) debe copiarse al directorio de salida, no referenciado por el proyecto.

Las referencias funcionan de manera normal, pero una vez que etiqueto uno de los archivos en este directorio como "Contenido" y " Copiar siempre " o " Copiar si es " más nuevo, la estructura de directorios libs y SystemHooks también se copia al directorio de salida.

Como tal, después de una compilación, mi estructura de directorio en disco se ve así:

SketchingMode         <-- solution folder, other projects here as well
    SketchingMode     <-- app project folder
        libs
            SystemHooks
        bin
            Debug               <-- main build output here
                libs
                    SystemHooks <-- 1-2 files in here

¿Es la única forma de evitar esto usando los pasos posteriores a la compilación y simplemente agregando las declaraciones de copia necesarias? ¿O puedo modificar de alguna manera el archivo del proyecto para evitar copiar la estructura completa de esa manera?

Para que quede claro, en el directorio bin \ Debug no quiero otra capa de libs \ SystemHooks allí, y todos los archivos que se están copiando actualmente en la carpeta bin \ Debug \ libs \ SystemHooks deben estar copiado en la carpeta bin \ Debug en su lugar.

¿Fue útil?

Solución

¿Qué tal si revisa el directorio libs al nivel de la solución en lugar del proyecto? Eso es lo que hacemos ya que los proyectos de biblioteca tienden a ser utilizados por múltiples proyectos; la ubicación directa en el directorio de un proyecto no constituiría un recurso altamente compartible.

SketchingMode solution
  SketchingMode proj
    bin
      Debug
      Release
  Libs
    SystemHooks
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top