我们如何在MSBuild创建的msdeploy包中包含ajaxmin创建的文件

Wes*_*org 5 msbuild tfs tfs2010 microsoft-ajax-minifier ajaxmin

我们使用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>
Run Code Online (Sandbox Code Playgroud)

当我们在工作站上构建站点并且可以在站点中使用.min.js文件时,这非常有用.当我们在此任务中检查此项目时,也会在msbuild服务器上运行,但是ajaxmin生成的.min.js文件不会复制到我们使用的tfs2010 Rolling Build的放置位置.这些.min.js文件也不包含在我们在此滚动构建期间创建的包中,并且也会复制到放置位置.只有包含在项目中的文件才会用于包并复制到放置位置.

我们用于创建包的MSBuild参数如下:

/p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:MSDeployPublishMethod=InProc /p:CreatePackageOnPublish=True /p:MSDeployServiceURL=localhost
Run Code Online (Sandbox Code Playgroud)

我尝试了一些额外的构建任务来将所有.min.js文件复制到创建包的位置.我还尝试了以下网址: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>
Run Code Online (Sandbox Code Playgroud)

有没有其他人也有这个问题或有没有人知道如何在msdeploy包中包含*.min.js文件并使文件复制到放置位置?

Moh*_*MVP 4

您错过了目标目录,因此您所要做的就是为脚本文件夹、源和目标中的每个脚本创建对文件夹,以确保您没有根据脚本文件夹结构将所有 min 文件复制到项目中的每个文件夹中你的项目的任何方式,我写一篇文章以及谁如何做到这一点,你也可以下载这样做的项目,http://mohamedradwan.wordpress.com/2010/11/12/how-to-include-minify-文件或自定义文件与 web-pagckage-or-ms-deploy-package/

谢谢