2010-04-28 9 views
26

¿Están las propiedades de MSBuild que establece Visual Studio? Estoy buscando tener un comportamiento condicional dependiendo de la versión (si la hay) de Visual Studio.En MSBuild es posible determinar si estoy ejecutando en Visual Studio

+0

¿Has visto la respuesta a una publicación anterior: http://stackoverflow.com/questions/2499253/msbuild-how-to-set-condition-using-a-condition-stored-in-a-property Quizás esto tomará el camino correcto – used2could

+0

es crud de las versiones anteriores de VS y no se encuentra en los archivos de proyecto más nuevos. Ignora por completo. – dan

Respuesta

34

El valor de propiedad que debe usar es BuildingInsideVisualStudio, cuando está construyendo dentro de Visual Studio esta propiedad se establecerá en verdadero. Como ProductVersion está declarado en el archivo de proyecto, no puede usarlo porque tendrá el mismo valor ya sea que esté dentro de VS o mediante msbuild.exe.

+3

Documentación aquí: http://msdn.microsoft.com/en-us/library/ms171468(en-us).aspx. –

+0

Preste atención a que esta propiedad esté habilitada incluso si ejecuta devenv.com desde la consola. –

0

Sí, <ProductVersion> aparece en un archivo de proyecto. Coincide con el número de versión de Visual Studio.

+0

Ver mi comentario sobre esto. –

0

<ProductVersion> le dará la versión de MSBuild que está ejecutando el proceso de compilación.

Tenga en cuenta que en VS 2010 el proceso de compilación puede estar orientado a .Net 4.0 o 3.5. Debe considerar cuidadosamente si su compilación condicional depende de la versión de msbuild o del marco de destino de la compilación y las herramientas de la compilación. utilizando. Si su condición se basa en el marco objetivo, use <TargetFrameworkVersion>.

Por supuesto, si su compilación también podría ejecutarse en VS 2008, necesita admitir la recuperación adecuada si <TargetFrameworkVersion> falta.

1

para abordar directamente la cuestión en su título - si lo que desea saber si está siendo construido a partir VS o no, comprobar el valor de IsDesktopBuild que devolverá true o false adecuadamente.

+2

Esto solo se aplica a TFS. –

+0

@Sayed gracias. ¡Debido a que solo he usado MSBuild desde dentro de TFS, no sé dónde están los puntos de división! – AakashM

Cuestiones relacionadas