2010-11-10 54 views
5

我们使用ajaxmin从我们所有的.js文件创建.min.js文件创建的msdeploy包创建的文件。我们编辑的项目的.csproj文件,并添加以下内容:我们怎样才能包括由ajaxmin通过的MSBuild

<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 Rolling Build的放置位置。这些.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软件包并将文件复制到放置位置?

回答

4

你错过了目标目录因此,所有你需要做的是创造在脚本文件夹中,源和目的每个脚本对文件夹,以确保你没有按所有分文件复制到每个文件夹在您的项目你的项目,什么方法,我写了一篇文章,谁如何做到这一点的脚本文件夹结构,你也可以下载的项目,做到这一点,http://mohamedradwan.wordpress.com/2010/11/12/how-to-include-minify-files-or-custome-files-with-web-pagckage-or-ms-deploy-package/

感谢

+0

感谢这个帖子。这些文件现在包含在软件包中。 – 2010-11-13 12:20:06

+0

不客气 – 2010-11-13 21:23:30