2010-07-27 39 views
1

J'utilise MSBuild/yuicompressor pour combiner et réduire le JavaScript.Comment générer un horodatage dans MSBuild

Dans le cadre de ce processus, je souhaite modifier mes références de script afin qu'elles aient un horodatage dans la chaîne de requête. De cette façon, un utilisateur obtient toujours la version non mise en cache du fichier lorsqu'une nouvelle version est publiée. Par exemple:

<script type="text/javascript" src="/scripts/combined-minified.js?20100727" /> 

J'utilise FileUpdate de MSBuildCommunityTasks mettre à jour la référence <script>, mais il ne possède pas d'horodatage:

<FileUpdate 
     Files="@(includeFile)" 
     Regex="#scriptfiletoken#" 
     ReplacementText="&lt;script type='text/javascript' src='/scripts/combined-minified.js' /&gt;" 
     /> 

Quelle est la meilleure façon de sortie cet horodatage en utilisant MSBuild?

Répondre

2

Cette méthode a fonctionné pour moi:

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

<Target Name="MyTarget"> 
    <!-- Build timestamp. --> 
    <Time> 
     <Output TaskParameter="Month" PropertyName="Month" /> 
     <Output TaskParameter="Day" PropertyName="Day" /> 
     <Output TaskParameter="Year" PropertyName="Year" /> 
    </Time> 

    <!-- ....... -->  

    <!-- Add timestamp to includeFile --> 
    <FileUpdate 
     Files="@(includeFile)" 
     Regex="#scriptfiletoken#" 
     ReplacementText="&lt;script type='text/javascript' src='/scripts/combined-minified.js?$(Year)$(Month)$(Day)' /&gt;" 
     /> 
</Target>