5

JavaScriptファイルのセットを取り込んで最小化し、拡張子.min.jsを付けて出力するカスタムMSBuildタスクがあります。Visual Studioを使用して通常のビルドを実行すると、完全に機能し、.min.jsファイルは元のファイルと同じディレクトリに出力されます。Visual Studioの公開機能を使用して展開しようとすると、元の.jsファイルのみが公開ディレクトリに移動します。タスクの出力を「コンテンツ」としてカウントして終了するにはどうすればよいですか。公開されたフォルダにアップしますか?

編集:タスク内にOutputタグを追加し、その周りにItemGroupを作成することで、それを理解することができました。

<Target Name="AfterBuild">      
    <ItemGroup>
        <JavaScriptFiles Include="Scripts\*.js" Exclude="Scripts\*.min.js" />
    </ItemGroup>
    <JsCompress Files="@(JavaScriptFiles)" OutputPath="Scripts">
        <Output TaskParameter="CompressedFiles" ItemName="CompressedFiles" />
    </JsCompress>
    <ItemGroup>
        <Content Include="@(CompressedFiles)" />
    </ItemGroup>
</Target>
4

2 に答える 2

2

Build と Publish は別のターゲットです。プロジェクトにターゲットを追加し、縮小を独自のターゲットに抽象化してから、AfterBuild および Publish ターゲットを縮小ターゲットに依存させます。このようなもの:

  <Target Name="AfterBuild" DependsOnTargets="Build;Minify">
  </Target>
  <Target Name="Publish" DependsOnTargets="Build;Minify">
  </Target>
  <Target Name="Minify" DependsOnTargets="Build">
    <ItemGroup>
      <JavaScriptFiles Include="Scripts\*.js" Exclude="Scripts\*.min.js" />
    </ItemGroup>
    <JsCompress Files="@(JavaScriptFiles)" OutputPath="Scripts">
      <Output TaskParameter="CompressedFiles" ItemName="CompressedFiles" />
    </JsCompress>
    <ItemGroup>
      <Content Include="@(CompressedFiles)" />
    </ItemGroup>
  </Target>

もちろん、このスニペットはビルド ターゲットが必要であることを意味しますが、そうでない場合もあります。そのため、これを変更する必要がある場合があります。お役に立てれば!

于 2010-03-30T20:14:37.397 に答える
0

ファイルのプロパティを変更します。これらのファイルの Build Action および Copy to Output Directory プロパティを確認してください。

于 2010-03-09T16:33:25.387 に答える