2012-03-06 18 views

Respuesta

0

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.

  1. Haga clic derecho sobre el proyecto en el explorador de soluciones y seleccione Propiedades
  2. Seleccionar los Eventos pestaña
  3. añadir ya sea un pre o post Generar evento para abrir el archivo deseado
+0

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

+0

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

2

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 
32

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> 
Cuestiones relacionadas