2011-02-11 19 views
35

Tengo la necesidad de eliminar y cambiar el nombre de una selección de configuraciones de solución/proyecto en Visual Studio, ¿hay alguna herramienta que te ayude con esto?¿Hay una alternativa/complemento para el administrador de configuración de Visual Studio?

Estoy encontrando la herramienta incorporada muy poco útil. Por ejemplo, cuando elimino una configuración de una solución, rechazará eliminar las configuraciones de proyecto relacionadas solo en caso de que se necesiten en otro lugar. También cambiar el nombre de una configuración de solución no cambiará el nombre de sus configuraciones relacionadas.

Debe haber una mejor manera de hacerlo. ¿Alguna herramienta alternativa por ahí?

Respuesta

0

No he tenido que hacer esto por mí mismo, pero hay algunos ejemplos de hacer esto en el código en la siguiente dirección:

http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/5de5439a-5bd1-4a9f-aba4-b4a0e91e518e/

Sin embargo, probablemente debería también revisar esta información: Build Configurations

Como indica que la realización de dichos cambios puede hacer que se creen o asignen automáticamente configuraciones de proyecto y configuraciones de solución.

Si lo quiere como un complemento que puede ejecutar, probablemente necesite escribir el suyo, me temo.

+2

favor tenga cuidado de no publicar enlaces .NET 1.1, a menos que la información es específica de .NET 1.1. De lo contrario, los lectores pueden terminar siguiendo una cadena de enlaces antiguos a información que ya no es la mejor. –

+1

@John El enlace de configuraciones de compilación es para VS2010. El otro enlace es para VS2005, pero incluye referencias para hacerlo funcionar en VS 2010. Y más particularmente, se refiere al Modelo de Objetos de Visual Studio, no al .NET Framework. –

+1

el enlace de configuraciones de compilación es para VS2010 porque lo edité. Ese es el enlace al que me refería. –

6

Dudo que haya una extensión de terceros que haga exactamente lo que usted desea hacer. Sin embargo, Visual Studio 2010 tiene un conjunto bastante robusto de interfaces de automatización COM que le permite personalizar casi cualquier parte del IDE, incluido el administrador de configuración, configuaciones, soluciones, proyectos, etc. Puede usar casi cualquier idioma que desee, incluidos C#, VB6 y C++. Incluso puede escribir una macro en VB Script.

Aquí está una descripción gráfica de la Visual Studio 2010 Object Model

En particular, véase:

Configuration Interface

ConfigurationManager Interface

Configurations Interface

Solution2 Interface

SolutionConfiguration2 Interface

SolutionBuild2 Interface

0

siguiente enlace Roger Willcocks', me topé con Carlos Quintero's blog. Interesante leer, parece. Entre otras cosas, menciona las dificultades que enfrentan al tratar de limpiar las configuraciones del proyecto.

Al echar un vistazo a la documentación de Microsoft, parece que EnvDTE80 se ha mantenido prácticamente igual desde VS2005.


EDIT: echar un vistazo a EnvDTE100 ...

+1

EnvDTE80 se ha mantenido igual. Pero se han agregado EnvDTE90, EnvDTE90a y EnvDTE100. – ThomasMcLeod

+0

@ThomasMcLeod: ¿tiene enlaces a experiencias de terceros, no solo a MSDN? .. – GregC

+0

No es de terceros, pero los he usado para llenar los agujeros en la funcionalidad de VS. Sin embargo, creo que la mayoría de la gente usa la automatización VS para el control de código fuente personalizado y para mejorar el depurador, no para la administración de compilación personalizada. – ThomasMcLeod

1

sln y vcproj archivos son en realidad archivos XML. A menudo me encuentro editándolos a mano en un editor de texto para realizar varias tomas que de otro modo parecerían imposibles de hacer desde la interfaz de usuario.La IU a menudo realiza operaciones incompletas, por ejemplo, al cambiar el nombre de un proyecto, no todas las entradas se actualizan. Por lo general, prefiero hacerlo yo mismo a mano.

16

tengo la necesidad de quitar y cambiar el nombre de una selección de la solución /proyecto configuraciones en Visual Studio, son Hay alguna herramienta que le ayudará con esto?

Respuesta corta:

Respuesta larga:clase-de (por ejemplo, vas a integrar las herramientas de "ayudantes" que sean incompletas, y escribir secuencias de comandos personalizadas/trabajo para crear/integrar en su proceso de gestión de configuración).

Comentario editorial: Gran pregunta, muchas personas han sufrido este (como se ha señalado por los "upvotes" a su pregunta), y que a todos nos amor una buena respuesta.

Estoy buscando la herramienta incorporada muy inútil. Por ejemplo, cuando borro una configuración de una solución, se rehusará a eliminar las configuraciones de proyecto relacionadas solo en caso de que se necesiten en otro lugar. También cambiar el nombre de una configuración de solución no cambiará el nombre configuraciones .

De acuerdo, la herramienta incorporada es bastante inútil. Es muy difícil mantener muchos proyectos y soluciones con diferentes configuraciones y conjuntos de dependencias, especialmente para diferentes tipos/plataformas de destino. Tiene idiosincracias como el uso de múltiples GUID para proyectos, conjuntos de archivos y tipos de proyectos, que se almacenan en el registro y se accede desde dentro de *.sln y *.vcproj. La herramienta intentará "curarse" con estos identificadores únicos, deshaciendo los cambios e ignorando algunos de sus propios valores para "reparar" las conexiones entre proyectos/soluciones. Esto da como resultado una gran cantidad de errores en su registro y en sus archivos de configuración, cambios innecesarios en los archivos si los está registrando en su sistema de control de versiones y escenarios donde muchas partes del archivo serán "ignoradas", incluso aunque (correctamente) hiciste esos cambios. Algunos datos como "nombre de proyecto" y "nombre de configuración de proyecto" y "nombre de plataforma de proyecto" a veces son redundantes, y a veces no. Debido a los GUID, este tipo de "mantenimiento externo/manual" hace que sea muy fácil para su proyecto/solución "aparecer" para hacer referencia al proyecto correcto (por nombre), pero el proyecto INCORRECTO (identificado únicamente por GUID, que era resuelto a través de una referencia en el registro). Además, hay más de una forma de especificar lo mismo que dentro de esos archivos, lo que genera confusión (sobre todo porque la ontología de archivo *.sln/*.vcproj no está bien documentada, ni es probable que esté bien documentada en el futuro).

En resumen, MSVS es un IDE bastante bueno, pero terrible para la gestión y mantenimiento de proyectos y construcciones. Parece carecer de un diseño central fuerte. Admito que es un problema (muy) difícil: la gente ha trabajado en la "construcción" durante décadas, y el estado del arte en mi humilde opinión no es muy bueno.Sin embargo, MSVS es definitivamente un "diseño por comité", que incluye desde la evolución hasta las principales revisiones de campo.

Por lo tanto, la respuesta "más correcta" a su pregunta es "no": MSVS no está diseñado para hacer lo que desea (por ejemplo, mantenimiento de configuraciones de soluciones/proyectos en MSVS). Sin embargo, estoy seguro de que la respuesta de Microsoft sería: "Le dimos una API de .NET para que pueda enviar su propia respuesta y escribir sus propias herramientas". Sin embargo, después de una gran investigación sobre este tema, en mi humilde opinión, no existe una solución adecuada para este tipo de herramientas que utilizan esos tipos de API (aunque puede utilizar sus propias herramientas para facilitar el mantenimiento).

MSVS2010 mejora, pero aún no es excelente para la administración de configuración de proyecto y compilación. Las nuevas API son útiles, pero son difíciles y, en mi humilde opinión, no están bien diseñadas. Lo más probable es que Microsoft nunca aborde seriamente ese aspecto del IDE: es un IDE, destinado a la iteración acelerada del desarrollo, y no destinado al mantenimiento del proyecto de construcción y solución. (Se pueden encontrar muchos detalles sobre este tema si profundiza en los foros de MSDN).

Debe haber una mejor manera de hacerlo esto. ¿Alguna herramienta alternativa por ahí?

Sí, y sí: Para todos construir sistemas, el problema es el "data-de-registro", que es lo que desea para una configuración: Estos archivos, estas macros definidos, estos argumentos de línea de comandos , este tipo de destino, etc. A partir de eso (que está registrado con su código fuente), se deben generar los archivos/scripts de compilación "reales".

Por supuesto, acabo de describir CMake (que genera "archivos de compilación" a partir de un archivo fuente de datos de registro) y una serie de otras herramientas. Ellos son tu mejor apuesta. En este caso, CMake hace un buen trabajo generando archivos *.sln y *.vcproj, pero no muchas otras herramientas (es algo difícil debido a la complejidad dentro de esos archivos, y sus detalles en gran parte no bien documentados). Otra herramienta que hace un muy buen trabajo al generar *.vcproj es qmake, (que es una buena herramienta de administración de configuración, incluso si no usa las bibliotecas Qt). Otro (idea similar) es Google de "gyp" (abreviatura de "generar-su-proyectos", que deberían generar *.sln/*.vcproj archivos, pero no estoy seguro de que está listo para "prime time".

Para todos estos herramientas, el flujo de trabajo implica:.

  1. Actualizar los datos de los archivos de registro;-
  2. (re) generar la *.sln/*.vcproj archivos
  3. Use los generados *.sln/*.vcproj archivos en su MSVS IDE o compilación de línea de comandos.

Si no desea que una herramienta externa, pero quiere tener un "plug-in" de algún tipo que funciona de forma nativa en sus *.sln/*.vcproj archivos, estoy al tanto de cualquier cosa para ayudar a usted (y Lo he buscado). No es una idea nueva: existen algunas herramientas para operar de forma nativa en estos archivos (como las herramientas de "migración de versiones" que algunas personas han escrito y compartido), y algunas personas han hablado acerca de un sistema de compilación que originalmente "acampó" estos archivos como los datos de registro, pero estos archivos son un poco desordenados e indocumentados, y un objetivo móvil con respecto a las versiones de MSVS, y no abordan muy bien la cuestión centralizada de la configuración de construcción centralizada con un proyecto local. anular, entonces eso es realmente difícil de hacer. (No existe ningún sistema de compilación en este momento que esté "acampado" en los archivos nativos de MS, aparte del MSVS, no creo.)

MSVS2010 hace que la creación de dicho complemento sea "más fácil" que las versiones anteriores de MSVS, pero no creo que todavía exista ese complemento (ni creo que un complemento tan generalizado tenga una alta probabilidad) de éxito, porque lo que está pidiendo no es una prioridad para el MSVS, que es principalmente un IDE, no un administrador de configuración). Por el contrario, lo más probable es que tenga que profundizar en la API de .NET para escribir su propia (trabajo y mantenimiento no triviales), o intente apoyarse en Visual Studio Project Properties (pero no creo que eso le proporcione lo que desea).

Por último, (fuera del tema), estoy escribiendo una herramienta que depende de la heurística para autogenerar y mantener automáticamente este tipo de dependencias de proyecto, y actualmente estoy escribiendo *.sln/*.vcproj archivos. No está listo para el "horario de máxima audiencia", pero me interesarían sus problemas específicos de administración de la configuración del proyecto, y estoy dispuesto a compartir la herramienta si es útil para usted (es el desarrollo del hobby personal en C++, actualmente Windows , pero debe llevar a Posix con poco esfuerzo).

+1

+100 para "no es una prioridad para Visual Studio". He visto otros casos en los que simplemente difieren de "Usar MSBuild, es bueno para ti". Y termina siendo duro al final. – GregC

+0

Es bueno cómo predican a los desarrolladores para que mantengan sus scripts de compilación, y luego escriben las acciones de compilación de IDE para ir directamente contra cualquier tipo de personalización de compilación. –

+0

@charley ¿Ha habido alguna actualización de esto desde 2011? Han sido 3 versiones y todavía no han hecho que la herramienta sea más útil. – Benjamin

2

Dado que esto es algo que me preguntaba y no veo ninguna actualización/respuesta reciente a esta pregunta, quiero vincular estas dos extensiones para Visual Studio 2015. Ambas se actualizaron recientemente y parecen prometedoras.

ProjectConfigurationManager: https://visualstudiogallery.msdn.microsoft.com/cf7efe17-ae87-40fe-a1e2-f2d61907f043?SRC=VSIDE

Mejor Administrador de configuración: https://visualstudiogallery.msdn.microsoft.com/d9552425-000f-468e-8b80-1c86447a5fb8

+0

Uso Better Configuration Manager todavía, cuando tengo que hacerlo, es bastante bueno. – gakera

Cuestiones relacionadas