Tengo un csproj que me gustaría activar la apertura de un archivo en particular en Visual Studio, solo si el destino se ejecutó desde Visual Studio, pero no desde la línea de comandos de MSBUILD. ¿Cómo hago esto?En MSBUILD, ¿cómo se puede especificar una condición que verifique si la línea de comando o VS la lanzaron?
Respuesta
Si lo entiendo correctamente, ¿desea abrir un archivo cuando construye en Visual Studio pero no desde la línea de comandos con MSBuild?
Si ese es el caso, especifique un PreBuild o PostBuild en Visual Studio.
- Haga clic derecho sobre el proyecto en el explorador de soluciones y seleccione Propiedades
- Seleccionar los Eventos pestaña
- añadir ya sea un pre o post Generar evento para abrir el archivo deseado
Agregue una propiedad al archivo de proyecto .csproj, por ejemplo:
<PropertyGroup>
<FromMSBuild>false</FromMSBuild>
</PropertyGroup>
Luego, en la tarea que desea ejecutar, coloque una condición que evalúe esa propiedad. Por ejemplo, si desea abrir el Bloc de notas cada vez que la construcción se ejecuta desde la línea de comandos y no visual studio:
<Target Name="BeforeBuild">
<Exec Command="C:\Windows\Notepad.exe" Condition="$(FromMSBuild)" />
</Target>
Por supuesto, esto depende de la configuración del $ (FromMSBuild) Propiedad correctamente cuando se ejecuta el construir a través de línea de comandos, así:
MSBuild myProject.csproj /p:FromMSBuild=true
Presupuesto de MSDN page:
Cuando se construye dentro de Visual Studio, la propiedad $ (BuildingInsideVisualStudio) se establece en true. Esto se puede utilizar en su proyecto o archivos .targets para hacer que la compilación se comporte de manera diferente.
Ejemplo de cómo se podría utilizar en su * proj o archivo .targets:
<PropertyGroup>
<MyProperty Condition="'$(BuildingInsideVisualStudio)' == 'true'">This build is done by VS</MyProperty>
<MyProperty Condition="'$(BuildingInsideVisualStudio)' != 'true'">This build is done from command line of by TFS</MyProperty>
</PropertyGroup>
- 1. una línea si la condición de asignación
- 2. Cómo convertir la condición 'si' en NAnt en MSBuild?
- 3. ¿Cómo especificar la carpeta de salida MSbuild?
- 4. MSBuild - Obteniendo el destino llamado desde la línea de comando
- 5. Verifique si se proporcionó la ruta completa
- 6. MSBuild: especificando un destino desde la línea de comando
- 7. no se puede ejecutar swing desde la línea de comando
- 8. Línea de comando MSBuild 4 y MSDeploy
- 9. MSBUILD: error MSB1008: solo se puede especificar un proyecto
- 10. prueba si se define una propiedad MSBuild?
- 11. Verifique si la actividad se inició en el Servicio
- 12. Verifique un rango de números en una condición if
- 13. No se puede ejecutar git desde la línea de comando
- 14. Condición de una línea en bash
- 15. si condición vs gestor de excepciones
- 16. Script R: Determine si el script se ejecuta en la GUI o desde la línea de comando
- 17. Creando una carpeta comprimida o comprimida en Windows usando Powershell o la línea de comando
- 18. Verifique la variable si está en una lista
- 19. ¿Cómo realizo una prueba de condición MSBuild si un grupo de elementos contiene un elemento?
- 20. iOS - Evite que se elimine el perfil de configuración del iPhone O verifique si está instalado
- 21. Verifique si la función se declara con el preprocesador C?
- 22. plantilla django si la condición
- 23. Cómo utilizar la condición O en la consulta de ActiveRecord
- 24. impulso :: program_options: Cómo especificar un comando sin "-" o "-"
- 25. ¿Cómo ingresar una pestaña char en la línea de comando?
- 26. ¿Cómo compilo mi proyecto delphi en la línea de comando?
- 27. NAnt: Cómo obtener el nombre de destino que se especificó en la línea de comando
- 28. ¿Cómo se puede implementar una variable de condición usando semáforos?
- 29. Añadiendo valor a la matriz si la condición se satisfizo
- 30. Si condición en la consulta de selección
no - Tengo un csproj con objetivos msbuild costumbre en él.. Cuando hago clic en compilar en Visual Studio, quiero que resulte en una acción especial en el objetivo ... algo así como Condition = "StartInInVS()". Cuando lo ejecuto desde el comando linke (es decir, msbuild ...) quiero que esa condición falle. Entonces, ¿cómo puede MSBUILD detectar en un destino cómo/qué se llama el objetivo? – zekeyeehaw
Tienes razón, mis disculpas. Mi respuesta anterior es incorrecta, y los eventos de compilación se ejecutarán independientemente. Agregué otra respuesta que explica cómo lograr tu objetivo, y lo probé esta vez para estar seguro. – BryanJ