2009-05-21 10 views
15

Javascriptファイルのセットでjsmin.exeを実行するASP.NET Webコントロール(サーバーコントロール)プロジェクトのビルド前アクションを追加しました。これらの出力ファイルは、ソース管理ツリーの一部であり、アセンブリに埋め込まれています。ビルド前のアクションのためのファイルアウト(TFS)のチェック

問題は、プリビルドが実行されているときに、jsminがファイルを読み取り専用で書き込むことができないことです。手前にファイルをチェックすることは可能ですか?あるいは、コマンドラインでファイルの属性を強制的に設定する必要があります。

この問題に対する改善された解決方法は、歓迎します。

"$(DevEnvDir)tf" checkout /lock:none "$(ProjectDir)myfile" 

答えて

10

あなたはTeam Foundation Serverのを使用している場合は、あなたがチェックするteam foundation command line utility(tf.exe)を使用することができます - あなたは、VSディレクトリを付加する必要がありメフメットの答えを持つ小さな問題

更新 ワン事前ビルド中にファイルを取り出して、ビルド後にチェックインし直してください。ソース管理に何か他のものを使用している場合は、tf.exeのようなコマンドラインツールがあるかどうかを確認することができます。

2

ビルドの一部としてファイルをチェックしたくない場合(通常はこのようなことはありません)、jsminを実行する前に.jsファイルの属性を設定するだけです。ファイルを読み書き可能に設定する最も簡単な方法は、MSBuild community extensionsによって提供されるAttribタスクを使用することです。同じコミュニティ拡張は、MSBuildからJSMinを簡単に呼び出すためのJSCompressタスクも提供します。

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

(注)インクリメンタルビルドに移動しようとした場合には、それらを取得した後、ファイルを変更することでも問題を引き起こす可能性があること:

したがって、あなたは、次のようなものを(テストしていません)必要があるだろう。

+0

保留中の変更として表示されないファイルを変更した場合、誤解を招くことはありませんか?チェックインの際にこれらは見逃す可能性があります。 –

関連する問題