我正在尝试使用 Albacore 的ZipTask压缩 rake 构建的工件。我正在构建的解决方案包含三个项目,其中包含需要单独压缩的工件,但此处仅提及 ASP.NET MVC 项目。这是解决方案的目录结构:
rakefile.rb
solution.sln
src/
(other projects that are not relevant)
website/
(various folders I don't want included in the artifacts)
bin/
Content/
Scripts/
Views/
Default.aspx
Global.asax
web.config
起初我写了这个任务:
website_directory = File.join '.', 'src', 'website'
website_project_name = 'website'
zip :zip => [ :run_unit_tests, :less ] do |zip|
zip.directories_to_zip = [ 'bin', 'Content', 'Scripts', 'Views' ].map{ |folder| File.join website_directory, folder }
zip.additional_files = [ 'Default.aspx', 'favicon.ico', 'Global.asax', 'web.config'].map{ |file| File.join website_directory, file }
zip.output_file = get_output_file_name
zip.output_path = get_artifacts_output_path website_project_name
end
问题是,这个任务的输出是一个包含这些文件夹内容的 zip 文件,而不是文件夹本身,这显然是不可取的。
接下来,我尝试将该flatten_zip
字段翻转为 false(这不是记录字段,但您可以在source中找到它)。这产生了一个包含上述文件夹的 zip,但位于整个./src/website/
文件夹层次结构的底部。我希望上述文件夹位于 zip 的根目录,所以这也不起作用。
所以我的下一个镜头是这个,使用exclusions
,这也没有记录:
zip :zip => [ :run_unit_tests, :less ] do |zip|
zip.directories_to_zip website_directory
zip.exclusions = [ /.git/, /.+\.cs/, /App_Data/, /Attributes/, /AutoMapper/, /Controllers/, /Diagrams/, /Extensions/, /Filters/, /Helpers/, /Models/, /obj/, /Properties/, /StructureMap/, /Templates/, /CompTracker.Web.csproj/, /Default.aspx.cs/, /Global.asax.cs/, /Publish.xml/, /pdb/ ]
zip.output_file = get_output_file_name
zip.output_path = get_artifacts_output_path website_project_name
end
这对我有用,但是当我最近添加/AutoMapper/
到数组时,它也导致 AutoMapper.dll 和 StructureMap.dll(当然)也被排除在 bin 文件夹之外。/StructureMap/
exclusions
我应该如何编辑上述任何任务,以便在我的 zip 根目录中只包含我想要的文件夹和文件?