Pregunta

Estoy usando Visual Studio 2008 y me gustaría crear una especie de proyecto contenedor que contenga varias DLL que deben instalarse con una solución. Quiero que estén en un proyecto separado para que puedan adjuntarse fácilmente a una solución como grupo.

Creé un proyecto vacío llamado TEST, le agregué mis DLL con una acción de compilación de "Contenido" y los configuré en "Copiar siempre". Todo eso funciona exactamente como yo quiero. El problema es que si configuro el Tipo de salida del proyecto TEST en " Aplicación de consola " o "Aplicación de Windows" que no se construirá porque no hay punto de entrada. Si configuro el Tipo de salida en " Biblioteca de clases " ;, se construye pero termino con un archivo TEST.DLL adicional que realmente no quiero.

¿Hay alguna forma de establecer el Tipo de salida en " none " ;? Quiero que se realicen las acciones de compilación (para que se copien mis archivos DLL) pero no quiero que se cree el ensamblado de clase ficticio. ¿Alguna idea?

¡Gracias!

¿Fue útil?

Solución

Suposiciones para la siguiente guía paso a paso:

Supongamos que tiene una solución con dos proyectos:

  • Main : su proyecto principal (inicio).
  • BundledDLLs : un proyecto de biblioteca que contiene los .dll s que deberían terminar en el directorio de salida del proyecto principal.

Guía paso a paso:

La forma más fácil de lograr su objetivo dentro de Visual Studio es probablemente la siguiente:

  1. Agregue todos los .dll s a BundledDLLs y configure su Copiar al directorio de salida a Copiar si más reciente .

    Esto se realiza en el Explorador de proyectos y las ventanas Propiedades .

  2. Configure el directorio de salida de BundledDLLs para que sea idéntico al directorio de salida de Main .

    Esto se puede hacer en la pestaña Build de la página BundledDLL Project Properties . Ingrese algo como lo siguiente en el cuadro de texto Ruta de salida :

    ..\Main\bin\Debug
    
  3. Configurar BundledDLLs como una dependencia de Main.

    No agregue BundledDLLs como referencia de proyecto a Main , como normalmente lo haría; en su lugar, use el cuadro de diálogo Dependencias del proyecto para. Esto le dirá a la herramienta de compilación que cada vez que se construye Main , primero debe crearse BundledDLLs .

    Haga esto haciendo clic derecho en el nodo del proyecto Main para abrir el menú contextual; seleccione Dependencias del proyecto ... desde allí. En el cuadro de diálogo ahora abierto, primero seleccione Main de la lista desplegable; luego marque BundledDLLs en la lista de proyectos a continuación. BundledDLLs ahora está registrado como una dependencia de Main .

      

    P.S .: Una desventaja de no tener una referencia de ensamblaje explícita en Main es que algunas herramientas podrían no reconocer la dependencia. Por ejemplo, la implementación de ClickOnce podría no funcionar correctamente.

  4. Agregue un evento posterior a la compilación a BundledDLLs que elimina el superfluo BundledDLLs.dll.

    Como dijiste, no quieres y no necesitas la salida ficticia generada cuando se construye BundledDLLs . Entonces, agregue un evento posterior a la compilación que simplemente elimine este .dll una vez que se haya creado.

    Abra la pestaña Eventos de compilación en la página BundledDLLs Propiedades del proyecto e ingrese algo como lo siguiente en el cuadro de texto posterior a la compilación:

    DEL "$(TargetDir)\$(TargetName).*"
    

    (En caso de que se haya preguntado: la razón por la que no agregó este proyecto como referencia de proyecto a Main anteriormente es porque si lo hubiera hecho, Main busque BundledDLLs.dll , que no podrá encontrar, ya que en realidad no desea que se genere dicho archivo).

      

    P.S .: Una desventaja de agregar dicho paso posterior a la compilación es que podría interferir con las compilaciones incrementales. Si su proyecto sigue siendo recompilado desde cero después de esto, es mejor que elimine el paso posterior a la compilación y viva con el BundledDLLs.dll adicional en el directorio de salida de su solución.

Otros consejos

Otra opción es usar un proyecto de archivo MAKE, que no requiere que construyas / vincules nada.

En las propiedades de su proyecto (haga clic con el botón derecho en la propiedad en el explorador de soluciones y haga clic en "Propiedades"), en "Propiedades de configuración" y luego en "General", elija "Makefile" del " Tipo de configuración " Menú desplegable. El resultado de la compilación incluirá la advertencia " La propiedad 'NMakeBuildCommandLine' no existe ... Omitiendo " pero la compilación tendrá éxito sin construir ningún dll / exe / etc.

Si bien otras respuestas aquí pueden abordar mejor su necesidad específica, la especificación de un archivo MAKE responde más directamente al título de la pregunta "¿Es posible crear un proyecto de Visual Studio con un tipo de salida de ninguno?" Espero que esto sea útil para las personas que buscan algo en Google y aterrizan aquí.

El crédito va a Xeek en el canal #winapi freenode irc por compartir este consejo.

En lugar de ponerlos en un proyecto, puede colocar los archivos en un Carpeta de soluciones . Uno de sus proyectos puede tener una acción de compilación que haga la copia, pero como no estarán en un proyecto, no intentarán " compilar " ;.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top