Как мы можем включить файлы, созданные ajaxmin, в пакет msdeploy, созданный MSBuild - PullRequest
5 голосов
/ 10 ноября 2010

Мы используем ajaxmin для создания файлов .min.js из всех наших файлов .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, но файлы .min.js, сгенерированные ajaxmin, не копируются в расположение отбрасывания используемой нами скользящей сборки 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/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.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>

У кого-нибудь еще есть эта проблема или у кого-нибудь есть идеи, как включить* .min.js файлы в пакете msdeploy и сделать файлы копировать в папку сброса?

1 Ответ

4 голосов
/ 12 ноября 2010

Вы пропустили каталог назначения, поэтому все, что вам нужно сделать, это создать пары папок для каждого сценария в папке сценария, источнике и месте назначения, чтобы убедиться, что вы не скопировали все минимальные файлы в каждую папку в вашем проекте в соответствииСтруктура папки сценария вашего проекта, в любом случае, я пишу статью и кто, как это сделать, вы также можете скачать проект, который делает это, http://mohamedradwan.wordpress.com/2010/11/12/how-to-include-minify-files-or-custome-files-with-web-pagckage-or-ms-deploy-package/

Спасибо

...