Comprobación de un archivo de salida (TFS) para una acción previa a la compilación

StackOverflow https://stackoverflow.com/questions/892195

  •  23-08-2019
  •  | 
  •  

Pregunta

He añadido una acción previa a la compilación para un control web ASP.NET (control de servidor) del proyecto, que se ejecuta jsmin.exe en un conjunto de archivos JavaScript. Estos archivos de salida son parte del árbol de control de origen y están integrados en el conjunto.

El problema es cuando el pre-construir carreras, jsmin no puede escribir en el archivo, ya que es de sólo lectura. ¿Es posible comprobar el archivo antes de mano? O estoy obligado a establecer los atributos del archivo en la línea de comandos.

Cualquier solución mejorada al problema es bienvenida.

Actualizar Un pequeño problema con la respuesta de Mehmet -Es necesario anteponer el directorio VS:

"$(DevEnvDir)tf" checkout /lock:none "$(ProjectDir)myfile" 
¿Fue útil?

Solución

Si está utilizando Team Foundation Server, puede utilizar utilidad de línea de comandos de team Foundation (tf.exe) para ver el archivo (s) durante la pre-construcción y luego ver de nuevo durante la posterior a la generación. Si estás usando algo más de control de código fuente, se puede comprobar si tienen una herramienta de línea de comandos como tf.exe.

Otros consejos

Si no desea comprobar los archivos en el marco de la construcción (que no lo haría normalmente para este tipo de cosas) entonces sólo tendría que establecer los atributos de los archivos .js antes de ejecutar jsmin en ellos. La forma más fácil de crear los archivos de lectura y permisos de escritura es utilizar la tarea Attrib proporcionada por las extensiones de la comunidad href="http://msbuildtasks.tigris.org/" MSBuild . Las mismas extensiones de la comunidad también proporcionan una tarea JSCompress para llamar fácilmente JSMin de MSBuild.

Por lo tanto usted tendría algo como lo siguiente (no probado):

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />

<!-- rest of TFSBuild.proj file -->

<Target Name="AfterGet">    
  <Message Text="Compressing Javascript files under &quot;$(SolutionRoot)&quot;." />   
  <CreateItem Include="$(SolutionRoot)\**\*.js">
    <Output TaskParameter="Include" ItemName="JsFiles"/>
  </CreateItem>
  <Attrib Files="@(JsFiles)" ReadOnly="false"/>
  <JSCompress Files="@(JsFiles)" />
</Target>

Tenga en cuenta que mediante la modificación de los archivos después de conseguir bien pueden causar problemas si se trató de mover a una acumulación gradual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top