我有一个要求,我需要在构建解决方案文件后压缩一些文件。
在Release / Debug模式下构建项目后,这是否可以自动实现。
答案 0 :(得分:9)
通常我不会在我的实际项目中添加诸如创建zip文件,安装程序,NuGet包等内容。
为什么?因为当我把它放在那里时,每次都会执行 我在Visual Studio中构建项目,例如在我调试时。
但只有在我发布时才需要zip文件,安装程序等,所以每次在Visual Studio中按F5时,我都不想等待它们重新生成。< / p>
要进行发布,我通常会创建一个执行MSBuild project file的批处理文件,该文件会创建发布所需的所有内容。
创建ZIP文件的IMO也属于该MSBuild项目文件。
我可以通过以下两个答案找到您需要的所有信息:
另外,来自我的一个项目的here's an example MSBuild project file,其执行以下操作:
这种方法的好处在于我可以通过单击(运行批处理文件)进行发布,其中包括我刚刚列出的所有内容。
创建所有这些东西需要一些时间,但由于它不是Visual Studio解决方案的一部分,因此每次在Visual Studio中进行构建时都不会运行 - 我只在我真正需要它时才执行它。
答案 1 :(得分:4)
转到项目的属性以及“构建活动”#39;选项卡在Post-Build事件区域中编写命令。那里的命令就像(或作为)Cmd批处理文件一样执行。
另外:还有一些&#39; makros&#39;在那里可用,这可能有助于引用项目文件夹等。检查出来。
而且,要添加到Jason的评论中,您还可以将批处理文件本身称为构建后命令。
(关于后期构建事件的一个警告:它们是在构建之后执行的。但是如果你有CSC目标,那么它们是在构建后事件之后的构建和之后编译的。如果你想要例如,在post-compile
事件中,您需要执行这些CSC目标的输出文件。)
答案 2 :(得分:0)
这对我有用:
if $(ConfigurationName) == Debug (powershell -Command "Get-ChildItem -Path '$(TargetDir)publish' -Recurse|Compress-Archive -DestinationPath '$(SolutionDir)PublishOutput\$(ProjectName)-$(ConfigurationName).zip' -Force")
答案 3 :(得分:0)
右键单击项目=> 选择属性
点击 BuildEvent
在构建后事件命令行中添加以下代码
if exist $(AssemblyName).zip ( Del $(AssemblyName).zip)
powershell.exe -command Compress-Archive -Path $(AssemblyName).dll, *dll -DestinationPath $(AssemblyName).zip
它将在“bin/release”文件夹中生成所有 .dll 的 zip 文件