一个小工具,用于移除 VS2003.NET 项目文件的 SCC 信息






4.73/5 (25投票s)
2004年6月27日
3分钟阅读

195100

1343
此工具移除 VS2003.NET 的项目和解决方案文件中保存的、与源代码控制相关的信息。
引言
由于即将发布的 SourceSafe 2005,我们决定将一些项目切换回 SourceSafe 数据库,而不是 CVS 存储库。 而说这很痛苦,都远远不足以形容现实情况。 在 VS.NET 中集成源代码不是一场噩梦,但您必须更改项目文件并删除一些其他文件才能摆脱它。 如果不这样做,当重新绑定到另一个 SCC 提供程序时,可能会给您带来真正的麻烦。
这篇“文章”(好吧,它可能不是一篇好文章,但这是我在 Code Project 上的第一篇文章)总结了我在构建这个工具时发现的东西,无论是我自己还是在博客和新闻组上发现的。
Using the Code
我决定编写这个小工具,以帮助摆脱与源代码控制相关的所有内容。 它非常易于使用:只需输入项目或解决方案文件的路径,然后单击“继续”,它就可以工作了。
目前,存在(相当多的)一些限制
- 它不处理 Web 项目(我会尽快处理)。
- 仅支持.csproj、.vbproj 和部署项目 (.vdproj) 文件,拥有任何其他类型的项目都会阻止您使用此工具。
- 它不会更改不是 .sln、.csproj 或 .vbproj 的文件的只读状态。
关注点
Visual Studio 将其 SCC 信息保存在很多地方。 如果您想清理干净,您必须摆脱所有这些信息。
解决方案文件 (.sln)
解决方案文件包含一个专用于 SCC 的部分。 如果您在文本编辑器中打开 .sln 文件,您会看到类似这样的内容
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyProject",
"Projects\MyProject.csproj", "{B1A1C06F-EB84-4215-975E-6B0B57496BAC}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
... other projects in your solution ...
Global
GlobalSection(SourceCodeControl) = preSolution
SccNumberOfProjects = 1
SccProjectName0 = Perforce\u0020Project
SccLocalPath0 = .
SccProvider0 = MSSCCI:Perforce\u0020SCM
CanCheckoutShared = true
SolutionUniqueID = {0F9ACC79-634F-44DB-9C57-C4B0C461AA7B}
SccProjectUniqueName1 = Projects\\MyProject.csproj
SccLocalPath1 = MyProject
EndGlobalSection
... other global sections ...
EndGlobal
只需删除 GlobalSection(SourceCodeControl)
... EndGlobalSection
并保存文件。
解决方案用户选项文件 (.suo)
除了删除文件外,我没有找到任何真正好的解决方案。 但不要担心,当您打开 sln 文件时,VS.NET 会重新创建它。
项目文件(C# .csproj 和 VB.NET .vbproj)
这些文件是基于 XML 的,因此清理它们并不难。 您所要做的就是删除主项目节点(命名为 CSharp 或 VisualBasic)上的以下属性
SccProjectName
SccLocalPath
SccProvider
SccAuxPath
安装项目文件 (.vdproj)
它们与 .csproj 和 .vbproj 非常相似,只是有一点不同:它们不是基于 XML 的。 您必须删除以下行
"SccProjectName" = "XXXXXXXXXXXXXXXXXX"
"SccLocalPath" = "8:..\\.."
"SccAuxPath" = "8:"
"SccProvider" = "XXXXXXXXXXXXXXXXXX"
所有其他内容
Visual Studio 创建了一些用于管理源代码集成的文件,因此您必须删除这些文件
- 在与 .sln 文件相同的文件夹中,您应该找到一个 solutionName.vssscc。
- 对于项目文件,您将拥有一个 projectFileName.projectExtension.vspscc。
- 您还将在项目目录中找到一些 vssver.scc 和 mssccprj.scc。
如果您使用 MS SourceSafe 作为您的源代码“数据库”,您还会在每个文件夹中找到一个 vssver.scc 文件:如果您想,可以删除它们,但即使不这样做,我也没有遇到任何问题。
历史
- v 0.9.3.0:支持基于 localhost 的 ASP.NET 项目
- v 0.9.2.0:VDPROJ 支持,项目和解决方案支持中的法语字符
- v 0.9.0.0:第一个版本,还有很多事情要做
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。