visual-studio - valido - temas para visual studio code
Variable de macros/entorno en archivos.sln y.vcproj para Visual Studio (5)
Tengo dos problemas similares:
a) Tengo una solución que incluye varios proyectos y quiero poder cambiar fácilmente la ubicación del proyecto configurando alguna variable de entorno / macro. Como ejemplo, este proyecto se puede ubicar en / SolutionDir / Dir1 / o / SolutionDir / Dir2 / Por lo tanto, quiero especificar que debería ubicarse en / SolutionDir / $ (Var) y simplemente configurar la variable.
¿Hay alguna compilación en la forma de Visual Studio para hacerlo?
Sé que actualmente solo existen dos soluciones: edite el archivo .sln manual / programáticamente para encontrar este proyecto y establecer la ruta correcta.
No pude usar la variable de entorno en el archivo .sln.
b) Tengo un proyecto que incluye archivos de recursos (.rc y .h). Quiero poder establecer su ubicación a través de otra variable de entorno o macro.
Algo como / ProjectDir / $ (Var2) / resource.rc
Encontré información prometedora en las hojas de propiedades, pero Visual Studio no expande las macros cuando las estoy usando en la etiqueta Archivo en .vcproj.
Gracias por cualquier idea de cómo resolver este problema.
Saludos, Victor
(a) Cyrille le da una solución decente a lo que pidió. Otra forma es mantener tus ajustes modificables en un lugar común. Tenga en cuenta que esto no funcionará con archivos que no sean de msbuild como * .sln y * .vcproj (hasta VS 2010).
Archivos de proyecto: ... $ (ChangeableDir) / foo.cs
Common.targets: ChangeThis ...
Sin embargo, no creo que esta sea una gran manera de hacer las cosas. Si las diferencias entre lo que está construyendo son grandes piezas de funcionalidad, debe considerar crear una rama en su sistema de control de origen. OTOH, si las diferencias son menores, por ejemplo, cadenas codificadas, entonces esto lleva a su segunda pregunta ...
(b) El tipo de administración de recursos que describe es esencialmente el mismo problema que enfrentan las personas que localizan su proyecto en diferentes idiomas. Afortunadamente, el soporte directo está integrado en Visual Studio desde 2005. Consulte preguntas anteriores como: Localización en Visual Studio 2008
Creo que tengo el mismo objetivo que usted: quiero usar variables de entorno para ubicar algunos proyectos en un archivo de solución (.sln) y usar algunas variables de entorno para ubicar algunos archivos dentro de mis proyectos.
Encontré una forma de hacerlo y me funciona bien (con Visual Studio 2005): - edite el archivo .sln con un editor de texto y use las variables de entorno con la siguiente sintaxis% MyEnvironmentVariable% - edite los archivos .vcproj y reemplace el ruta a los archivos deseados con algunas variables, con la siguiente sintaxis $ (MyEnvironmentVariable).
Espero que ayude ... Cyrille
La mejor manera de lograr lo que describe en b) es usar hojas de propiedades. Echa un vistazo también a esta pregunta muy similar .
Encontré información prometedora en las hojas de propiedades, pero Visual Studio no expande las macros cuando las estoy usando en la etiqueta Archivo en .vcproj.
No estoy seguro de qué versión de VS usas. VS2008 le permite definir, por ejemplo, un directorio de inclusión como este: "$ (OpenCVInclude) / cxcore / include". Lo uso todo el tiempo. OpenCVInclude es una macro definida en una hoja de propiedades.
En cuanto a la pregunta a), creo que no hay una forma "limpia" de hacer lo que quieres. Como alternativa podría usted el administrador de configuración:
- Incluir todos los proyectos en la solución.
- Nombre el proyecto de manera diferente, por ejemplo, basado en el OEM.
- Para cada proyecto, defina las configuraciones de lanzamiento y depuración en la solución.
- En "Build-> Configuration Manager" puede marcar o desmarcar la columna "Build" para cada configuración. Marque "construir" para el proyecto relevante.
No estoy seguro de si está creando solo proyectos de C ++ o si también está creando proyectos de C # / VB, pero una de las mejores cosas de Visual Studio es que todos los proyectos son solo proyectos de MSBuild. Si edita un proyecto en un editor de texto, verá que al final del proyecto importa un archivo .targets. Si rastrea y encuentra las importaciones, encontrará que casi todos los proyectos VS importan Microsoft.Common.Targets. Microsoft.Common.Targets importa Custom.Before.Microsoft.Common.Targets. Con esta importación, puede importar su propio archivo de objetivos con sus propias acciones personalizadas.
Por ejemplo, tengo un archivo de destino que tiene una propiedad común definida en todos los proyectos de una solución y un evento de compilación posterior personalizado que se procesa al final de cada proyecto.
Al usar este método de extensión y al crear configuraciones personalizadas en la solución, además de la versión estándar / debug, debería poder crear una configuración de construcción tan compleja como la necesite.
Solo usa la variable de entorno en el campo relevante:
OutputDirectory="$(MyEnvVariableName)/Bin"
Un truco es que necesita reiniciar el IDE de Visual Studio cada vez que cambie la variable.
Hay un artículo de MSDN precisamente sobre esto: Cómo: Usar variables de entorno en una compilación