5

ajaxmin を使用して、すべての .js ファイルから .min.js ファイルを作成します。プロジェクトの .csproj ファイルを編集し、以下を追加しました。

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />
<Target Name="AfterBuild">
    <ItemGroup>
        <JS Include="**\*.js" Exclude="**\*.min.js" />
    </ItemGroup>
    <AjaxMin JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".min.js" />
</Target>

これは、ワークステーションでサイトを構築し、サイトで .min.js ファイルを使用できる場合にうまく機能します。このタスクでこのプロジェクトを確認すると、msbuild サーバーでも実行されますが、ajaxmin によって生成された .min.js ファイルは、使用する tfs2010 ローリング ビルドのドロップ場所にコピーされません。これらの .min.js ファイルは、このローリング ビルド中に作成されるパッケージにも含まれず、ドロップ場所にもコピーされます。プロジェクトに含まれるファイルのみがパッケージに使用され、ドロップ場所にコピーされます。

パッケージの作成に使用する MSBuild 引数は次のとおりです。

/p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:MSDeployPublishMethod=InProc /p:CreatePackageOnPublish=True /p:MSDeployServiceURL=localhost

すべての .min.js ファイルをパッケージが作成された場所にコピーするための追加のビルド タスクを追加するなど、いくつかのことを試しました。次の URL http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageInclusiveExtraFilesOrExclusiveSpecificFiles.aspxも試して、このファイルを .csproj ファイルに次のように含めました。

<PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
    <ItemGroup>
        <_CustomFiles Include="**\*.min.js" />
        <FilesForPackagingFromProject  Include="%(_CustomFiles.Identity)">
            <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
        </FilesForPackagingFromProject>
    </ItemGroup>
</Target>

他の誰かにもこの問題がありますか、それとも msdeploy パッケージに *.min.js ファイルを含めてファイルをドロップ場所にコピーする方法を知っている人はいますか?

4

1 に答える 1

4

宛先ディレクトリを見逃したので、スクリプト フォルダー、ソース、および宛先に各スクリプトのペア フォルダーを作成して、スクリプト フォルダー構造に従ってプロジェクトの各フォルダーにすべての min ファイルをコピーしていないことを確認するだけです。あなたのプロジェクトの、私が記事を書く方法とその方法、それを行うプロジェクトをダウンロードすることもできます。 files-or-custome-files-with-web-pagckage-or-ms-deploy-package/

ありがとう

于 2010-11-12T15:46:07.137 に答える