用于在提交到 CodeProject 之前剥离 zip 文件中不需要的文件的工具






4.77/5 (29投票s)
CPZipStripper 工具(
图 1 - 红色标记的文件将被去除
引言
CPZipStripper 是一个简单的工具,我在 CP 上编辑和提交文章时一直在使用它,它的作用是从 ZIP 文件中删除不需要的文件 - 比如 debug 和 obj 文件夹中的文件、suo 文件、pdb 文件、aps 文件等等。它是一个一键式工具 - 所以你不需要浪费时间在 WinZip 或其他类似的工具中打开 ZIP 文件,然后手动删除不需要的文件。
如果文章作者在将 ZIP 文件发送给我们之前使用此工具,那将会非常好,这样编辑收到的邮件大小将会大大减少。
安装
将 release.zip 中的三个文件解压缩到您选择的任何永久文件夹中:-
- CPZipStripper.exe - 这是主可执行文件(针对 FW 1.1 的 .NET IL exe)
- CPZipStripperCfg.xml - 配置文件
- ICSharpCode.SharpZipLib.dll - 我用于访问 ZIP 文件的 DLL (SharpZipLib)
现在只需运行 CPZipStripper.exe 一次并退出。 就这样。
使用该工具
您可以将 ZIP 文件拖放到程序窗口中,或者右键单击 ZIP 文件并选择“使用 ZipStrip 打开”选项,但要添加上下文菜单项,您至少需要运行该程序一次 - 因为它没有单独的安装程序。
图 2 - Explorer 中 ZIP 文件的上下文菜单项
按钮
- 修改配置 - 这将在您的 Windows XML 编辑器中打开配置 XML 文件 - 如果您没有,它将报告错误。 如果是这样,请在记事本中手动打开 XML 文件并进行更改。
- extensions 节点列出了所有需要删除的扩展名
- paths 节点列出了您想要删除的所有路径(因此,如果您在那里有 debug,则会删除任何提取路径包含 debug 的文件)
- files 节点列出了您要删除的任何特定文件名
- 刷新列表框 - 如果 ZIP 文件已更改或您已对 XML 配置文件进行了修改,请单击“刷新列表框”按钮
- 去除不需要的文件 - 这将删除所有不需要的文件(在列表框中以红色显示)并将 ZIP 文件替换为干净的文件,但也会备份旧文件。
- 退出程序 - 请谨慎使用此按钮,因为它会关闭程序 ;-)
有趣的要点
以下是我学到的一些奇怪的事情 :-)
处理拖放比我想象的要容易得多。 首先,您需要将 Form
的 AllowDrop
属性设置为 true
。 然后只需处理 DragEnter
和 DragDrop
事件。
private void MainForm_DragDrop(object sender,
System.Windows.Forms.DragEventArgs e)
{
Array arr = (Array)e.Data.GetData(DataFormats.FileDrop);
if(arr != null)
{
//Doing it asynchronously else Explorer will freeze too
BeginInvoke(new DroppedFileHandler(FilterZip),
new object[] {arr.GetValue(0).ToString()});
}
}
private void MainForm_DragEnter(object sender,
System.Windows.Forms.DragEventArgs e)
{
//To change the mouse cursor if there are any files
e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ?
DragDropEffects.Copy : DragDropEffects.None;
}
如果您对一个通用函数感兴趣,该函数将允许您为特定文件类型添加上下文菜单项:-
请参阅我的博客条目:一个简单的 C# 函数,用于在资源管理器中添加上下文菜单项,这是该函数。
private bool AddContextMenuItem(string Extension,
string MenuName, string MenuDescription,
string MenuCommand)
{
bool ret = false;
RegistryKey rkey = Registry.ClassesRoot.OpenSubKey(
Extension);
if(rkey != null)
{
string extstring = rkey.GetValue("").ToString();
rkey.Close();
if( extstring != null )
{
if( extstring.Length > 0 )
{
rkey = Registry.ClassesRoot.OpenSubKey(extstring,true);
if(rkey != null)
{
string strkey = "shell\\" + MenuName + "\\command";
RegistryKey subky = rkey.CreateSubKey(strkey);
if(subky != null)
{
subky.SetValue("",MenuCommand);
subky.Close();
subky = rkey.OpenSubKey("shell\\" + MenuName, true);
if(subky != null)
{
subky.SetValue("",MenuDescription);
subky.Close();
}
ret = true;
}
rkey.Close();
}
}
}
}
return ret;
}
结论
UI 没什么好看的,但该工具对我有用。 如果任何人有任何建议/反馈,请通过文章论坛告诉我。
结论后记(dan g 的工具)
虽然我的工具旨在从 ZIP 文件中删除不需要的文件,但 dan g 在 CP 上发表了一篇精彩的文章,描述了一种 3 合 1 工具,可用于打包 VC++ 和 .NET 项目文件。 我强烈建议大家看看那个:-
毕竟,预防胜于治疗,不是吗?