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