0

プロジェクトのリリース ビルドが実行されるたびに Ajax Minifier (ajaxMin.exe) を実行するポスト ビルド タスクを追加しています。すべての CSS と JavaScript を圧縮するコードをプロジェクトに追加しましたが、TFS ビルド サーバーでビルドをトリガーすると、BuildLog.txt に多くのビルド エラーが表示され、次のメッセージが表示されます。

エラー: Microsoft Ajax Minifier には JS[filename].js への書き込み権限がありません

JavaScript および CSS ファイルごとに 1 つのメッセージが表示されますが、当然のことながら、ビルド出力を見て、縮小は行われていません。プロジェクトはソース管理下にありますが、ビルド後のタスクだと思っていましたが、ソース ファイル自体ではなく、ビルド サーバー上の出力を縮小することは問題ではありませんか? 私の .csproj に追加されたコードは次のとおりです。

<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\AjaxMin.tasks" />
  <Target Name="AfterBuild" Condition=" '$(ConfigurationName)'=='Release' ">
    <ItemGroup>
      <JsFilesRelease Include="**\*.js" Exclude="**\*.min.js" />
      <CssFilesRelease Include="**\*.css" />
    </ItemGroup>
    <AjaxMin JsSourceFiles="@(JsFilesRelease)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".js"
         CssSourceFiles="@(CssFilesRelease)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".css"   />
  </Target>

この制限を回避する方法はありますか? 上記から出力されたすべてのファイルが縮小されていることを確認したいのですが、それを妨げているのは唯一の権限のようです。

ありがとう

4

1 に答える 1

0

コードを使用すると、Ajax ミニファイヤは、ビルドが行われる作業ディレクトリとそのサブフォルダー内の js および css ファイルをすべて縮小します。AjaxMin タスクの前に作業ディレクトリを出力することでデバッグできます。

<Message Text="MSBuildProjectDirectory: $(MSBuildProjectDirectory)"/>

「**」よりも正確な出力ディレクトリへのパスを指定する必要があると思います。VSS を使用していますか?

同じことを行いますが、MicrosoftAjax の代わりに Yui Compressor タスク (http://yuicompressor.codeplex.com/) を使用します。 ここでコンプレッサーに関する研究を見つけることができます: http://coderjournal.com/2010/01/yahoo-yui-compressor-vs-microsoft-ajax-minifier-vs-google-closure-compiler/ .net と MSBuild。

于 2010-10-05T09:20:14.893 に答える