Pergunta

Eu adicionei uma ação de pré-compilação para um controle de web ASP.NET (controle de servidor) do projeto, que é executado jsmin.exe em um conjunto de arquivos Javascript. Esses arquivos de saída são parte da árvore de controle de origem e são incorporados na montagem.

O problema é quando os pré-compilação é executado, jsmin não pode escrever o arquivo, pois é somente leitura. É possível verificar o arquivo para fora antes da mão? Ou eu sou forçado a definir os atributos do arquivo na linha de comando.

Qualquer solução melhorada para o problema é bem-vindo.

Atualizar Um pequeno problema com a resposta de Mehmet -você precisa prefixar o diretório VS:

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

Solução

Se você estiver usando Team Foundation Server, você pode usar utilitário de linha de comando fundação equipe (tf.exe) para verificar o arquivo (s) durante a pré-compilação e, em seguida, devolvê-los novamente durante a pós-build. Se você estiver usando uma outra coisa para controle de origem, você pode verificar se eles têm uma ferramenta de linha de comando como tf.exe.

Outras dicas

Se você não quiser verificar os arquivos como parte da compilação (que você normalmente não para esse tipo de coisa), então eu simplesmente definir os atributos dos arquivos .js antes de executar jsmin sobre eles. A maneira mais fácil de configurar os arquivos leia-gravável é usar a tarefa Attrib fornecidas pelas MSBuild extensões comunidade . As mesmas extensões comunidade também fornecem uma tarefa JSCompress para facilmente chamar JSMin de MSBuild.

Por isso você teria algo como o seguinte (não testado):

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

Note que, ao modificar os arquivos depois fazê-los bem pode causar problemas se você tentou mover-se para uma compilação incremental.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top