9

我正在清理一堆来自不同来源的 Visual Studio 项目/解决方案,并且每个解决方案中都存储了大量的临时文件临时文件夹。

我想知道哪些文件类型可以安全删除,这样我就可以编写一个脚本来处理繁重的工作,这样当我试图将整个文件夹结构组织起来并链接到正确的共享时,就有更少的垃圾可以推动文件位置。

据我所知,以下文件和文件夹是临时的,可以安全删除:

文件

  • *.sdf
  • *.sln.docstates
  • *.suo
  • *.upgradelogxml
  • *。用户
  • *.vcxproj.filters
  • *.sln.old
  • *.suo.old
  • 升级日志.XML
  • *.wi​​xproj.vspscc
  • *.csproj.vspscc
  • *.SCC
  • *.ncb
  • *。选择
  • *.plg
  • *.aps
  • *.clw

文件夹

  • _UpgradeReport_Files(文件夹)
  • ipch(文件夹)
  • bin、obj、debug、release 和其他构建输出文件夹,尽管在构建过程中可能会有文件复制到这里...
  • 备份、备份 1 等...

我什至不确定其中一些文件类型到底是什么,我只知道当您打开解决方案时它们会重新生成——而且我知道在旧版和新版 Visual Studio 中我错过了更多文件类型。

上面的列表中是否应该保留任何文件类型?如果是这样,出于什么原因,是否还有其他文件类型可以清除而不会产生任何严重的副作用?

总的想法是最小化解决方案的大小和复杂性,当它被迁移、移动或重组或以其他方式洗牌时,足以使这个“解决方案脂肪”成为一个严重的性能和管理问题。

通常,如果我需要将某些内容签入新的源代码控制系统、压缩并通过电子邮件发送示例代码,或者将第三方或对等代码放入现有的共享文件夹和文件层次结构中,我就会看到这个问题。

4

2 回答 2

15

我不同意你的“临时”文件列表——当然它们中很少有是临时的(否则它们会在 %TEMP% 目录中)。当然,它们中的大多数对于您的项目成功构建并不是必需的,但它们仍然很重要。

  • sdf - SQL Server 紧凑型数据库。VS2012 用于存储 VC 智能感知数据。如果没有此文件,您将无法获得智能感知和代码完成,直到它重建。
  • sln.docstates - 在您的解决方案中存储有关文件的临时状态信息。
  • suo - 包含有关每个解决方案 IDE 自定义设置的信息,例如窗口布局和工具箱加载。删除它通常是安全的,但您的解决方案将来可能需要更长时间才能加载,并且您将丢失任何 UI 自定义。
  • upgradelog.xml - 是的,升级日志文件有点乱。这可以删除。
  • 用户 - 我确定这是 VC6 天的旧文件...
  • vcxproj.filters - 保留这个,它是每台计算机/每项目文件系统组织列表的东西
  • sln.old - “旧”文件不是 VS 文件。这看起来像是用户或工具制作的备份文件。
  • suo.old -
  • UpgradeLog.XML - 如果您不使用 UpgradeLog 工具,可以将其删除
  • wixproj.vspscc - 如果您使用源代码管理,请不要删除此文件。它是 VS 源代码控制集成的一部分。在删除绑定文件后,试图将未经检查的更改重新集成到源代码控制中,这简直是地狱。仅当您不使用源代码管理时才删除它。
  • csproj.vspscc - 同上。
  • SCC - 用于源代码控制。如果您使用源代码管理,请不要删除它。
  • ncb - 在 VC6 到 2010 中使用的 Intellisense 缓存。如果删除它,您将丢失 VC intellisense,直到 IDE 重建它,这可能会在大型项目中占用 aaaggess。

我不知道这个或其他文件是什么:.opt、.plg、.aps、.clw

当然,诀窍是首先在解决方案中正确安排文件。项目源文件应该与项目元数据(即我刚刚在上面列出的文件)分开保存,最好是在它们自己的层次结构中的单独文件夹中(这样你就可以为同一个源代码拥有多个 VC 项目文件,允许贡献者使用 VC2005, 2008 年和 2010 年)。

于 2012-09-14T16:27:23.227 回答
10

查看此 Visual Studio .gitignore 问题的答案中列出的文件夹和扩展名,了解通常被认为是非必要的文件。

但是,如果您不知道它是什么,一般来说删除它不是一个好主意。例如,.sdf 文件可能是 SQL Server CE 数据库,这在某些项目中可能很重要。因此,请确保在运行任何解决方案清理脚本之前在某处进行备份。

于 2012-09-14T16:25:06.060 回答